gpt4 book ai didi

c++ - new 的内存是否必须来自 operator new?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:04 27 4
gpt4 key购买 nike

在考虑类似的事情时

auto x = new T;

标准是否强制要求内存必须来自operator new——类特定的还是全局的?也就是说,如果缺少特定于类的 operator new,则没有办法从除全局 operator new 之外的任何地方获取内存?

最佳答案

我认为你的理解方式是错误的。

表达式 new T 总是由两个步骤组成:

  1. 搜索合适的operator new。如果一个存在于类 T 中,则采用那个,否则采用全局的。全局的总是存在的,因为这是标准规定的(所以你永远不能“定义”它(因为它已经被定义),但你可以替换它)。

    你可以说 ::new T 总是无条件地选择全局 operator new

  2. 一旦分配函数被调用并成功,对象就在该内存中构造。

如果你说 new (a, b, c) T,那么会发生同样的情况,只是在第 1 步中我们现在正在寻找一个 operator new 重载适当的签名。

关于c++ - new 的内存是否必须来自 operator new?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com