C++ 分配器:operator new 或 placement new

c++ allocator: operator new or placement new

阅读此 后,我知道 placement new 很难正确使用。然后我发现std::allocator,所以我想std::allocator应该用placement new因为它可以分开分配和构建分两步

不过,好像告诉我std::allocator是由operator new实现的,而不是placement new。我现在很困惑。如果不使用placement new,怎么能把分配和构建分两步分开呢?

你必须区分 the operator new function and new expressions

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


std::allocator have two functions to implement allocation and construction: allocate and construct.

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