#define SAFE_DELETE(a) if( (a) != NULL ) delete (a); (a) = NULL;
或
template<typename T> void safe_delete(T*& a) {
delete a;
a = NULL;
}
或者其他更好的方式
最佳答案
我不会说两者都不是,因为两者都会给您一种虚假的安全感。例如,假设您有一个函数:
void Func( SomePtr * p ) {
// stuff
SafeDelete( p );
}
您将 p 设置为 NULL,但函数外的 p 拷贝不受影响。
但是,如果您必须这样做,请使用模板 - 宏总是有可能影响其他名称。
关于c++ - 哪个版本的 safe_delete 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540920/