次の方法で共有


C6011

更新 : 2007 年 11 月

警告 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 ...
}

参照

概念

注釈の概要

Indirection and Address-of Operators

参照

Null

NULL (CRT)

malloc

free