2 guihesu guihesu 于 2015.07.14 21:53 提问

c++中析构函数中的指针问题

在c++一个类中的数据成员是指针。在这个类中的析构函数指针为什么要先删除。然后再定义成空指针?图片

7个回答

LZW_qianzui
LZW_qianzui   2015.07.14 22:36
已采纳

先删除主要是为了释放掉分配在堆的内存数据,防止内存泄漏,然后赋值为NULL主要是防止野指针导致程序崩溃,这样做体现出程序的健壮性,我用一个形象低俗的例子记住了这一点,把赋值为NULL想象成上完厕所记得擦屁股……这样程序就不会出现野指针了,因为野指针很大可能会是导致项目失败的关键

Evankaka
Evankaka   Ds   Rxr 2015.07.14 21:56

因为这个指针是new出来的,如果不delete掉,会引起内存漏肉。
另外,设置 为Null,防止出现野指针(指向不知道的地方)

frank_20080215
frank_20080215   2015.07.14 22:05

防止内存泄露否则机器会越来越慢的

oyljerry
oyljerry   Ds   Rxr 2015.07.14 22:12

delete是释放new出来的堆上资源,否则会引起内存泄露。

lenovo20142018
lenovo20142018   2015.07.15 08:14

防止内存泄露,删除指针,防止成为野指针

cuiwei1026522829
cuiwei1026522829   Ds   Rxr 2015.07.15 08:50

删除分配在堆的内存,之后再重新安全指定null ,如果不只是,可能会指向一些乱七八糟的地方

guihesu
guihesu   2015.07.15 12:06

谢谢各位的回答。理解了。

Csdn user default icon
上传中...
上传图片
插入图片