早就发现这个模块在退出时VC6就报“
Detected Memory Leak”,彻查了几遍自己写的部分始终没有发现可以导致泄漏的地方。
今天查看了一下调用这部分的代码才发现问题所在:
我写的这个类CVod在创建时是new出来的,这个对象指针被赋给了CVod的父类CBaseVod,在 delete的时候也是对这个父类的指针进行 delete的,而CBaseVod居然没有将Destructor声明为 virtual,所以造成了对象只有局部被释放的结果。
Effective C++第三版中的条款07说的就是这个问题,以前看这部分的时候没当回事,看来还要好好读一下这本书。
今天查看了一下调用这部分的代码才发现问题所在:
我写的这个类CVod在创建时是new出来的,这个对象指针被赋给了CVod的父类CBaseVod,在 delete的时候也是对这个父类的指针进行 delete的,而CBaseVod居然没有将Destructor声明为 virtual,所以造成了对象只有局部被释放的结果。
Effective C++第三版中的条款07说的就是这个问题,以前看这部分的时候没当回事,看来还要好好读一下这本书。