Acc*_*tor 4 c++ memory pointers heap-memory dangling-pointer
是说delete pointer和pointer = nullptr一样吗?可能不是,但后者会释放内存吗?怎么样delete pointer; pointer = nullptr/ pointer = nullptr; delete pointer?为什么不使用它来提供一种安全的方法来过早地删除指针,如果需要,通常会在其他时间删除它们并导致正常删除错误?
fre*_*low 10
pointer = nullptr;就像从名片上取下墨水一样.你不再知道房子的位置,至少不是看那张特定的名片.但房子还在那里.
delete pointer;就像拆毁房子一样.名片仍然告诉你那个房子曾经在哪里,但如果你要去那里(取消引用指针),你会看到房子已经消失了.或者更糟糕的是,他们可能同时在该地址建立核废料储存设施.
它不一样,因为虽然您可能将指针设置为null,但指针指向的内容仍将占用空间.
干
delete pointer;
pointer = NULL;
Run Code Online (Sandbox Code Playgroud)
很好,但是
pointer = NULL;
delete pointer;
Run Code Online (Sandbox Code Playgroud)
不是,因为你已经将指针设置为NULL,所以delete命令将没有任何东西可以删除(或者它认为).你现在有一个内存泄漏,因为预先指向的指针(让我们说一个链表)现在漂浮在你的内存中,并且程序无法检查.