C++ 代码中 sizeof 不应作用于 NULL
10.7.8 ID_sizeof_NULL
标识符 NULL 由实现定义,在 C++ 语言中往往等同于常量 0,sizeof(NULL) 的结果很可能与预期不符。
示例:
size_t n = sizeof(NULL); // Non-compliant
不同的编译器对示例代码有不同的处理,有些会把 NULL 当作指针,有些会当作常量 0。
应改为:
size_t n = sizeof(nullptr); // Compliant
相关
依据
ISO/IEC 14882:2003 C.2.2.3(1)-implementation
ISO/IEC 14882:2011 C.3.2.4(1)-implementation
ISO/IEC 14882:2017 C.5.2.7(1)-implementation