Skip to content

Latest commit

 

History

History
42 lines (31 loc) · 1.15 KB

c6398.md

File metadata and controls

42 lines (31 loc) · 1.15 KB
description title ms.date f1_keywords helpviewer_keywords
Learn more about: Warning C6398: The address-of a field cannot be null in well-defined code
Warning C6398
02/05/2024
C6398
DUBIOUS_NULL_CHECK_FIELD
C6398

Warning C6398

The address-of a field cannot be null in well-defined code

Remarks

The address-of operator returns the address of its operand. This value should never be compared to nullptr:

  • The address-of a field can only be nullptr if the base pointer was nullptr and the field is at the zero offset (&p->field == nullptr implies p == nullptr). In this case, the expression should be simplified.
  • In any other cases, the value of the unary & operator can't be nullptr unless there's undefined behavior in the code (&v == nullptr always evaluates to false).

Example

struct A { int* x; };

bool hasNullField(A *a)
{  
    return &a->x == nullptr; // C6398 reported here.
}

To fix this issue, double check if the use of unary & was intentional:

struct A { int* x; };

bool hasNullField(A *a)
{  
    return a->x == nullptr; // no C6398 reported here.
}

See also

C6397