如题。
在析构函数中,对裸指针成员delete后,就应该认为完成了此成员的管理。
不要再将其指向 nullptr.
如下:
//类的定义
class example
{
public:
//构造函数
example::example()
: mPointer(new int*)
{
//do something
}
//析构函数
example::~example()
{
delete mPointer; //释放堆内存
mPointer = nullptr; //一些人认为应将指针指向合法位置,但这会导致程序中的bug无法暴露!
}
private:
int* mPointer;
}
此操作是冗余的。
原因:
1.在大型项目中,这样可能会导致程序退出变慢;
2.若程序中存在使用悬挂指针的bug,将其设置为nullptr可能导致问题无法暴露。
应让其在delete后的使用直接导致程序崩溃!从而暴露并修复 此问题。
ANYWAY: 现代C++中不要使用裸指针,用智能指针代替。
参考:链接: link