次の方法で共有


警告 C6386

バッファー オーバーラン: 'バッファー名' にアクセスすると、書き込み可能なサイズは 'size1' バイトですが、'size2' バイトが書き込まれる場合があります。

解説

この警告は、指定されたバッファーの書き込み可能なエクステントが、書き込みに使用されるインデックスよりも小さい可能性があることを示しています。 この欠陥により、バッファー オーバーランが発生する可能性があります。

コード分析名: WRITE_OVERRUN

次のコードでは、この警告と C6201 が発生します。

#define MAX 25

void f()
{
  char a[MAX];
  a[MAX] = '\0'; // this writes one element past the end of the buffer
}

警告を修正するには、配列インデックスが 0 から始まるという事実を説明する次のコードを使用します。 したがって、 MAX - 1 はバッファー内の最後の要素です。

#define MAX 25

void f ( )
{
   char a[MAX];
   a[MAX-1] = '\0';
}

関連項目

C6201