Share via


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 속성을 사용하여 매개 변수에 주석이 지정된 함수 내에서 메모리를 할당해야 합니다. 다음 코드에서는 메모리를 먼저 할당하지 않고 함수 내에서 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

NULL (CRT)

malloc

free

개념

주석 개요

Indirection and Address-of Operators