数组放置的析构函数new

lez*_*lon 2 c++ memory placement-new

我一直无法找到答案:

T * blockPtr = static_cast<T*>(malloc(nb*sizeof(T)));
new (blockPtr) T[nb];
// use my blockPtr array
// call destructors (?)
free(blockPtr);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,调用析构函数的正确方法是什么?我应该手动循环每个项目并调用每个析构函数,还是有一个特定的语法在一次调用中执行此操作?我知道在调用delete[]类T时,像MSVC这样的编译器通常会在场景后面有一个特定的"向量析构函数"来执行此操作.

Lig*_*ica 5

我应该手动循环每个项目并调用每个析构函数

是.

是否有一个特定的语法在一次调用中执行此操作?

没有.


我希望你真的需要这样做!