placement new的标准用法及用途

  • Post author:
  • Post category:其他


什么是placement new?

所谓placement new就是在用户指定的内存位置上构建新的对象,这个构建过程不需要额外分配内存,只需要调用对象的构造函数即可。

举例来说:

class foo{};

foo* pfoo = new foo;

pfoo指向的对象的地址你是不能决定的,因为new已经为你做了这些工作。第一步分配内存,第二步调用类的构造函数。

而placement new是怎么做的呢,说白了就是把原本new做的两步工作分开来。第一步你自己分配内存,第二步你调用类的构造函数在自己分配的内存上构建新的对象。

placement new的好处:

1)在已分配好的内存上进行对象的构建,构建速度快。

2)已分配好的内存可以反复利用,有效的避免内存碎片问题。

关于Placement new的标准用法,网上

有一篇文章

讲得很清楚,我这里再转述一下。


class


Foo

{




char


cc;



float


f;



public


:



void


print() { std::cout


<<







ADDR:







<<




this




<<


std::endl; }



void


set_f(


float


_f ) { std::cout


<<







版权声明:本文为lazyking原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。