【问题标题】:c++ allocator: operator new or placement newc ++分配器:运算符new或placement new
【发布时间】:2019-12-04 09:03:34
【问题描述】:

读了link之后,我知道placement new太难用了。然后我找到了std::allocator,所以我认为std::allocator应该使用placement new,因为它可以分开分配并分两步进行构造。

但是,How are allocator in C++ implemented? 似乎告诉我std::allocator 是由operator new 实现的,而不是placement new。我现在很困惑。如果它不使用placement new,它怎么能分开分配和两步构建?

【问题讨论】:

    标签: c++ new-operator allocator placement-new


    【解决方案1】:

    您必须区分the operator new functionnew expressions

    前者(operator new 函数)只分配内存。后者(new 表达式)调用 operator new 分配内存,然后调用构造函数。


    std::allocator有两个函数来实现分配和构造:allocateconstruct

    allocate 函数使用operator new 函数分配内存。 construct 函数使用placement-new 来构造对象。这似乎是您想要的两步过程。

    【讨论】:

      猜你喜欢
      • 2011-08-03
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 2023-03-22
      • 1970-01-01
      • 2012-07-31
      相关资源
      最近更新 更多