【发布时间】:2014-01-08 05:35:57
【问题描述】:
所以我最近在这个网站上被告知使用new 运算符,但当我问为什么时没有得到回应。
所以我的问题是:使用new 真的有什么不好的地方吗?
我能想到的唯一原因是当new 调用未与delete 调用配对时内存泄漏。
【问题讨论】:
-
超链接在哪里?
-
当您不分享上下文时,我们应该如何知道您被告知的原因?
-
哦,这只是一个关于良好形式的问题,但它是作为答案并发布在以下 cmets 中:stackoverflow.com/questions/20966064/…
-
好的 - 所以在
main中使用new创建了一个对象,当它可以更容易、有效、简洁和可靠地放入堆栈时 - 请注意程序员忘记了 @ 987654328@它在从main()返回之前,这表明了错误的种类。大多数情况下,对于应用程序级编程,您将拥有一些容器,例如vector或map,无需您显式使用new即可存储值。对于pImpl和多态状态“机器”,您可能需要在工厂方法中使用new,但在Kerrek 的评论中它们可能有资格作为“专家”。 -
是的 -
AirportGame app; app.run();。动态分配需要在编译时跟踪正在使用的内存 - 它相对昂贵(= CPU 消耗 = 慢)(不仅在 C++ 中,而且在任何语言中都是固有的,垃圾收集更是如此)。堆栈的内存是在编译时计算的,堆栈指针通常只是在函数进入和退出时调整和恢复 - 非常快。
标签: c++ standards new-operator dynamic-memory-allocation