다음을 통해 공유


경고 C6397

주소 연산자는 잘 정의된 코드에서 null 포인터를 반환할 수 없습니다.

설명

주소 연산자는 피연산자의 주소를 반환합니다. 이 값은nullptr과 비교해서는 안 됩니다.

  • 필드의 주소는 기본 포인터가 nullptr이고 필드가 0 오프셋에 있는 경우에만 nullptr이 될 수 있습니다(&p->field == nullptrp == nullptr을 의미). 이 경우 식을 단순화해야 합니다.
  • 다른 경우에는 단항 & 연산자의 값은 코드에 정의되지 않은 동작이 없으면 nullptr일 수 없습니다(&v == nullptr은 항상 false로 평가됨).

예시

bool isNull(int *a)
{  
    return &a == nullptr; // C6397 reported here.
}

이 문제를 해결하려면 단항 &의 사용이 의도적인지 다시 확인합니다.

bool isNull(int *a)
{  
    return a == nullptr; // no C6397 reported here.
}

참고 항목

C6398