删除nullptr - 性能开销?

NFR*_*RCR 8 c++

如果指针为nullptr,则运算符delete将自行检查.在没有自己检查的情况下调用nullptr上的delete时是否有任何性能开销?

delete ptr;
Run Code Online (Sandbox Code Playgroud)

要么

if (ptr != nullptr) delete ptr; 
Run Code Online (Sandbox Code Playgroud)

如果ptr是nullptr,上面哪个执行得更快?

Bo *_*son 19

像往常一样,它取决于编译器.

我使用MSVC,它将这两行编译为完全相同的代码.

规则说如果指针为null,则删除无效.因此,如果你不检查,编译器必须.