C 删除一个指针(释放内存)

新手上路,请多包涵

考虑以下代码:

 int a = 10;
int * b = &a;
int * c = b;
delete b; // equivalent to delete c;

Am I correct to understand in the last line, delete b and delete c are equivalent, and that both will free the memory space holding a , thus a 不再访问?

原文由 space_voyager 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 660
1 个回答

你的程序的行为是 未定义 的。您 只能 在指向使用 delete 分配的内存的指针上使用 new 。如果你写过

int* b = new int;
*b = 10;
int* c = b;

那么你 可以delete b; delete c; 释放你的内存。不要尝试 取消引用 bcdelete 调用之后,这样做的行为也 _未定义_。

原文由 Bathsheba 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏