在删除/免费优化掉函数调用之前不进行空检查吗?

iam*_*ind 0 c++ optimization null delete-operator

关于是否在删除之前进行空检查有几个问题.现在,我仍然在许多生产代码中看到过这样的做法,我不相信所有程序员都不知道这delete 0;是安全的事实.

所以,我不知道是否值得假设之前的null检查delete/free会通过保存函数调用来提供性能优化?

if(0 != p)
  delete p;
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 6

编号delete不是一个功能,但operator delete根据类型可能会有一个调用.

充其量你将保存第二个比较0.这都是过早的优化:这些都不是你的瓶颈,而你正在编写冗余代码.

写吧:

delete ptr;
Run Code Online (Sandbox Code Playgroud)

  • 我称这种过早的去优化而不是过早的优化.空指针应该是罕见的,因此大多数情况下,如果测试将使程序减慢一点点. (3认同)