【问题标题】:Difference between new and operator new in C++ [duplicate]C ++中new和operator new之间的区别[重复]
【发布时间】:2011-03-16 19:09:06
【问题描述】:

可能重复:
Difference between 'new operator' and 'operator new'?

使用 new 和 operator new 有什么区别?
不久前,我在某处读到 operator new 的行为类似于 malloc(无构造函数)。它是否正确?如果是这样,有人可以举个例子,当尝试使用“operator new”分配对象时,它会给我错误。
谢谢。

【问题讨论】:

  • 你不应该调用 operator new。如果要控制如何为对象分配内存,请实现 operator new,然后调用普通 new。这将自动调用您的版本。
  • 搜索是你的朋友。这个问题已经被问到并用一个几乎相同的问题标题得到了回答。
  • @wheaties:我在输入标题后出现的帮助线程中搜索,我没有看到任何相关内容,抱歉。

标签: c++


【解决方案1】:

operator new 是最低级别的分配机制。实际对象应使用new 分配,它告诉 C++ 实际创建对象并设置其所有必要的管道(超类信息、vtables 等),否则它无法存在 一个对象。

【讨论】:

    【解决方案2】:
    • operator new 不调用类T 的构造函数,而是返回void*,而不是T*
    • new内部调用operator new,然后调用类T的构造函数在分配的内存中构造对象,然后返回T*

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-04
      • 2015-07-01
      • 2017-09-02
      • 2013-12-20
      • 2012-12-12
      • 2018-02-25
      • 2018-10-18
      • 2017-10-17
      相关资源
      最近更新 更多