C6011
警告 C6011: NULL ポインター <名前> を逆参照しています。
この警告は、null ポインターが逆参照されていることを示します。ポインターの値が無効な場合、結果は未定義になります。
使用例
次に示すコードでは、十分なメモリ容量が使用できない場合、malloc を呼び出すと null が返されるため、この警告が生成されます。
#include <malloc.h>
void f( )
{
char *p = ( char * ) malloc( 10 );
*p = '\0';
// code ...
free( p );
}
この警告を修正するには、次のコードに示すように null 値に対するポインターをチェックします。
#include <malloc.h>
void f( )
{
char *p = ( char * )malloc ( 10 );
if ( p )
{
*p = '\0';
// code ...
free( p );
}
}
パラメーターを逆参照する前に Pre 条件で Null プロパティを使用して、パラメーターに注釈を付ける関数の内部でメモリを割り当てる必要があります。次に示すコードでは、最初にメモリを割り当てる前に、関数内部での null ポインター (pc) を逆参照しようとするため、警告 C6011 が生成されます。
#include <codeanalysis\sourceannotations.h>
using namespace vc_attributes;
void f([Pre(Null=Yes)] char* pc)
{
*pc='\0'; // warning C6011 - pc is null
// code ...
}