【发布时间】:2018-07-16 14:23:16
【问题描述】:
是否可以在没有 new 运算符的类实例上使用 delete 运算符来释放内存?像这样:
Class myclass{public void hi{std::cout<<"hi\n";};}
myclass class1;
delete &class1;
class1.hi(); //results in error
谢谢
【问题讨论】:
-
可能:是,正确:不可能。对于每个
new,应该有一个delete,反之亦然 -
你认为你为什么需要这样做?
-
我只是好奇 :D
-
我很确定这在语言标准和每个 C++ 教程中都有明确说明。现在你不能那样做。对于大多数实现,内存驻留在堆栈上,不能被释放,也不能以有意义的方式使用它。阅读堆栈和堆(例如 here 以更好地理解底层机制,但请记住这是实现细节,而不是 C++ 语言。
-
@RPGillespie:对我来说唯一有趣的问题是如果你有类似
delete new foo[1];的东西会发生什么@
标签: c++ class delete-operator