【发布时间】:2011-11-14 20:57:24
【问题描述】:
我通过阅读 parashift.com 知道在指针上使用 delete 可以释放内存
[16.1] delete p 是删除指针p,还是删除指向的数据*p?
指向的数据。
关键字应该是delete_the_thing_pointed_to_by。相同 释放 a 指向的内存时会出现滥用英语的情况 C 中的指针:free(p) 真正的意思是 free_the_stuff_pointed_to_by(p)。
关于“删除 (C++)”的 wiki 文章说“许多程序员事后将指针设置为 NULL 以尽量减少编程错误”
是否需要考虑删除指针本身?
声明的指针仍然占用内存是否正确?
即如果我要声明数十亿个指向 NULL 的不同指针,它仍然会占用内存(因此我需要删除指针本身)。
如何删除指针?
【问题讨论】:
-
指针本身通常是在堆栈上分配的(除非在处理指向指针的指针等时...)。当弹出包含它的堆栈帧时,它会从堆栈中删除。您将如何手动删除它?
-
这是一个很好的面试问题。
-
只调用删除你用new创建的东西。你的指针指向的对象是用 new 创建的,所以在它上面调用 delete。但是指针呢? (它是用新创建的吗(与它所指向的区别))。
-
为了学习-你将如何创建一个新的指针?我无法绕过它
-
right.. 但是 int* 将是一个对象.. 然后我的问题将是 ptr-to-ptr pp.. 我现在知道它会超出范围并被自动删除。
标签: c++ delete-operator