バッファー オーバーラン: 'バッファー名' にアクセスすると、書き込み可能なサイズは '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';
}