当出现没有定位符的内存泄露时,可以考虑是否是由于由于没有将父类的析构函数设置为虚拟函数导致的。
比如今天在编写PecsviewerDBAccess.dll时出现了这样的内存泄露:
{21329} normal block at 0x04FE64C0, 130 bytes long.
Data: < le b > A0 6C 65 00 C8 62 FE 04 ....
经过查找,就是由于接口IpecsviewerDBReader和CDatabaseManager的析构函数没有设置为虚函数造成的。