析构函数的标量与矢量?

在IDA中对一个类的成员函数进行查看的时候会发现有两种析构函数'scalar deleting destructor'和 'vector deleting destructor'。翻译成中文就是标量析构函数和矢量析构函数,我本人是第一次听说这种说法于是Google了一下。

发现原来所谓的标量就是对象的析构函数,而矢量指的是对象数组的析构函数,这两种函数的实现分别如下。这里记录一下,以便日后查阅。

void scalar_deleting_destructor(A* pa)
{
pa->~A();
A::operator delete(pa);
}
void vector_deleting_destructor(A* pa, size_t count)
{
for (size_t i = 0; i < count; ++i)
pa[i].~A();
A::operator delete[](pa);
}

 

posted @ 2016-08-05 11:25  Ox9A82  阅读(371)  评论(0编辑  收藏  举报