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 构造对象。这似乎是您想要的两步过程。
阅读此 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 构造对象。这似乎是您想要的两步过程。