Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The address-of operator cannot return
nullpointer 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
nullptrif the base pointer wasnullptrand the field is at the zero offset (&p->field == nullptrimpliesp == nullptr). In this case, the expression should be simplified. - In any other cases, the value of the unary
&operator can't benullptrunless there's undefined behavior in the code (&v == nullptralways evaluates to false).
Example
The following example generates C6397:
bool isNull(int *a)
{
return &a == nullptr; // C6397 reported here.
}
To fix this issue, double check if the use of unary & was intentional:
bool isNull(int *a)
{
return a == nullptr; // no C6397 reported here.
}