VC++中符号"vector deletion destructor"的含义是什么?

Tho*_*son 9 destructor visual-c++

这个符号似乎是编译器生成的析构函数.这个''编译生成的析构函数'和'标量删除析构函数'有什么区别?是否还有其他类型的编译器生成ctor/dtor?

And*_*rey 11

函数命名'scalar deleting destructor'并且'vector deleting destructor'是VC编译器在生成delete语句代码时创建的辅助函数.不要将它们与也可能由编译器生成的类析构函数混淆.前者可以用伪代码表示为

void scalar_deleting_destructor(A* pa)
{
pa->~A();
A::operator delete(pa);
}
Run Code Online (Sandbox Code Playgroud)

而后者则是

void vector_deleting_destructor(A* pa, size_t count)
{
for (size_t i = 0; i < count; ++i)
pa[i].~A();
A::operator delete[](pa);
}
Run Code Online (Sandbox Code Playgroud)

  • @Thomson让我试着让它更清晰.`delete a`是一个*delete语句*,即一个语言结构,它不能与`A :: operator delete`混淆,它是一个*delete operator*,一个实际释放内存的函数.我现在手头没有C++标准,稍后我可以提供参考. (3认同)