首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

类C1继承C0,C1所需空间大于C0;C1 *p=new C1; delete (C0*)p是不是不会完全释放new申请的内存?望们指点

2013-03-21 
类C1继承C0,C1所需空间大于C0;C1 *pnew C1 delete (C0*)p是不是不会完全释放new申请的内存?望大虾们指点

类C1继承C0,C1所需空间大于C0;C1 *p=new C1; delete (C0*)p是不是不会完全释放new申请的内存?望大虾们指点!
如题;
类C1继承C0,C1所需空间大于C0;C1 *p=new C1; delete (C0*)p是不是不会完全释放new申请的内存?
望大虾们指点!
[解决办法]
C0的析构函数是虚函数的话就会正确析构
[解决办法]
语法上会泄漏,但最终还要看编译器的
[解决办法]
内存块分配是另外一套机制,按照地址和大小记录的,和类无关,按照不同的类delete,对象“本身”所占的内存块也一定会完全释放的。

会出问题的是,类的成员,比如有CString成员,没有调用正确的析构函数的话,CString里面分配的内存就无法释放,或者按照错误的方式析构成员会引起异常。

针对你的情况,把析构函数定义成虚函数就行了。

热点排行