【发布时间】:2014-04-10 15:29:49
【问题描述】:
我刚刚收到一条评论,喜欢
问题在于手动内存管理。
delete在用户代码中没有位置,从 C++14 开始,new也没有
谁能解释一下为什么?
【问题讨论】:
-
虽然其中有一点道理,但就目前而言,这种说法是完全错误的,所以不要要求解释。它与“宏在程序中没有位置”和“模板导致膨胀”或任何此类绝对教条一样错误。教条,不管什么是愚蠢的,它只告诉你追求它的狂热者的有限心态。
-
@Damon 我不是该声明的作者,但完全同意。你有没有在用户代码中出现
delete或new是最佳选择的示例? -
@Damon 你能解释一下为什么它是“完全错误的”吗?
-
@KonradRudolph:这是错误的,因为它是那些教条式的笼统陈述之一。即使它适用于绝大多数情况(我并不怀疑),“没有位置”仍然是完全错误的。
-
我已经编写了二十年来使用指针在 c'tors 中获取和在 d'tors 中释放的代码。而且我可以肯定地说,我从来没有因为在那里使用原始指针而发生内存泄漏或取消引用错误。不要误会我的意思,我当然有这些,但是因为我忘记初始化一个对象或忘记将它从某个容器中移除,等等。永远不会因为类中的原始指针未从析构函数等中正确删除。虽然智能指针很有帮助,但笼统地说没有其他有效方法只是谎言。
标签: c++ memory-management c++14