【发布时间】:2014-06-28 09:26:11
【问题描述】:
char *str = "hi";
delete [] str;
我想知道为什么我们不能通过 delete 操作符来释放内存?执行此操作时,我收到exception“运行时错误”。
char *str = "hi"; 自动分配内存并在其中写入字符串。
所以删除运算符应该可以工作,还是我对这个假设有误?
【问题讨论】:
-
没有(动态)内存分配 - str 只是一个指向字符串文字的指针。
-
你的标题建议你想问一下删除新操作符分配的内存。您的问题不涉及 new 运算符。那你在问什么?
-
@PaulR 在最一般的意义上,有(特别是静态和自动分配),只是没有动态内存分配。
-
@PaulR 我已投票决定重新提出这个问题,因为它表达了一个非常普遍的误解,即 c++ 如何处理这些事情。答案也可能非常适合帮助其他人进行研究。请在关闭此之前提供适当的副本!
-
可能 - 查找重复项可能是一项艰巨的工作,即使您知道有很多重复项。
标签: c++