Akh*_*hil 20 c++ constructor in-place placement-new
可能重复:
C++的"放置新"
什么是C++中的就地构造函数?
例如Datatype*x = new(y)Datatype();
lin*_*r27 42
这称为放置新运算符.它允许您提供数据将被分配的内存,而无需new操作员分配.例如:
Foo * f = new Foo();
Run Code Online (Sandbox Code Playgroud)
以上将为您分配内存.
void * fm = malloc(sizeof(Foo));
Foo *f = new (fm) Foo();
Run Code Online (Sandbox Code Playgroud)
以上将使用调用分配的内存malloc. new将不再分配.但是,您不限于课程.对于通过调用分配的任何类型,您都可以使用placement new运算符new.
放置新的'gotcha'是您不应该使用delete关键字释放通过调用placement new运算符分配的内存.您将通过直接调用析构函数来销毁该对象.
f->~Foo();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30595 次 |
| 最近记录: |