析构函数的标量与矢量?
在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); }