【问题标题】:Difference in implementation between calling malloc() vs "operator new" function in C++在 C++ 中调用 malloc() 与“operator new”函数之间的实现差异
【发布时间】:2017-11-07 00:42:52
【问题描述】:

这里的帖子回答了关于两者区别的问题:diff-between-malloc-operatornew

我想知道的是:一个人使用另一个人吗?我怀疑“operator new”函数以某种形式调用 malloc,但我可能还差得很远。有人知道说 gcc 的实现吗?

【问题讨论】:

  • operator new 如何分配内存是一个实现细节。它可以通过malloc,或者直接通过对底层操作系统的系统调用。
  • @StoryTeller 是的,我知道它是特定于实现的。但是是否有一些文档描述了流行的编译器/系统的各种实现?
  • @Neroku 我认为这不是真的。您必须自己调用构造函数。只有“new”(作为关键字/运算符)也会调用构造函数。
  • 关于 gcc,您应该可以访问标准库的源代码。因此,您可能会自己发现(尽管我担心它们读起来会很糟糕......)
  • @Scheff 完全正确。如果有详细了解的人可以告诉我,或者告诉我从哪里开始寻找,那就太好了。

标签: c++ malloc


【解决方案1】:

new 的默认实现调用 malloc 是通常和习惯的做法。但是,并不要求它这样做。我见过不调用 malloc 的默认新实现。

【讨论】:

  • 问题是关于“operator new”功能而不是“new”关键字/运算符。你说的是前者吗?
  • 您提到的任何实现是否在线记录?
猜你喜欢
  • 2012-12-15
  • 2014-06-28
  • 2012-06-25
  • 1970-01-01
  • 2018-05-22
  • 2019-03-05
  • 2014-06-09
  • 1970-01-01
  • 2016-12-17
相关资源
最近更新 更多