【发布时间】:2013-04-30 13:30:23
【问题描述】:
在 Exceptional C++ 中,Herb Sutter 在第 35 条中写道:
更喜欢使用免费商店(新建/删除)。避免使用堆 (malloc/free)。
我为什么要这样做?
如果实现选择通过使用malloc 来实现new,则可能会产生开销,因此就性能而言,这看起来像是一条糟糕的建议。
【问题讨论】:
-
malloc/free根本不知道构造函数和析构函数是什么。这足以成为始终使用new/delete的理由。 -
@syam:谢谢,但我认为任何 Exceptional C++ 的读者都已经知道
malloc和new之间的区别。我希望本书作者试图提出另一个观点。 -
@DarkWanderer 它没有:您的链接解释了
new和malloc之间的区别,我的问题是“为什么最好使用前者?” -
@qdii:请再读一遍。 OP 特别强调了免费存储和堆之间的差异,而不是关于 malloc/free。接受的答案给出了很好的解释。
标签: c++ memory-management new-operator