共用方式為


C6011

警告 C6011: 取值 NULL 指標 <name>

這則警告表示將取值 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 屬性 (Property) 加註其參數的函式內,配置記憶體。 下列程式碼會因為沒有先配置記憶體就嘗試在函式中取值 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 ...
}

請參閱

參考

NULL (CRT)

malloc

free

概念

間接取值和傳址運算子

其他資源

附註概觀

Null