搜索
您的当前位置:首页C++的placement new

C++的placement new

来源:世旅网

使用placement new时,要包含头文件new,它的原型为void * operator new(size_t, void* p);。使用时语法格式为(中括号内的部分为可选):

 

 

几个例子:

 

placement new也可以实现对不同的类使用不同的分配函数,我们可以根据需要自定义分配函数。

 

注意,operator new函数与其他operator函数(如operator=)不同,它没有重载new(或者delete)表达式,而且我们也不能重定义new和delete表达式的行为。

标准库中包含operator new函数和operator delete函数,使用他们可以获得未构造的内存,这也是我们使用new表达式分配内存的第一步(使用new表达式分配内存时,第一步调用标准operator new函数分配未初始化的内存,第二步调用适当的构造函数,第三步返回构造好的对象的指针)。

 

使用placement new分配的内存不受标准内存管理程序控制,你需要手动调用析构函数来释放内存空间。

 

 

(参考资料:《The C++ Programming Language》)

因篇幅问题不能全部显示,请点此查看更多更全内容

Top