一个诡异的C++内存泄露问题。
2017-06-26 17:18
183 查看
delet被编译成了两个步骤:调相应析构函数,回收p指向的内存块
即使父类没声明虚析构函数,第二步还是生效的,所以你Derived的内存区是被正确回收的,但Derived的内存区域(std::string)并不是连续区间,可能是这样的东东(64byte+ptr)
delet的第二步回收的就只是这(64byte+ptr) 65个字节
string内部关联的那块就泄露了
然后delete的第一步,调用到正确析构函数的话,就是Derived的析构函数,这个函数里会调用std::string的析构函数,回收那部分“关联内存”
父类没声明虚析构函数,就少了调用string
相关文章推荐
- 一个内存泄露问题的定位
- 一个很有深度的C++内存问题---GDB调试(一)
- C++中内存泄露问题
- 三种实现交换的方法,其中一个诡异的swap函数——C/C++语言(问题求助)
- 一个常见的android内存泄露 问题
- 写了一个可以记录路线的计步器,好像有内存泄露问题,求指点
- 修正了一个内存泄露的问题
- 再谈让C++更像C#:C#内存泄露问题
- c++ 导致内存泄露的一些小问题与解决方法
- 一个JS图片放大镜,实现动态记录的图片放大,避免内存泄露,解决IE6下无法遮盖select控件问题
- C++中内存泄露问题
- 一个C语言典型的内存泄露问题
- c++ matlab混合编程时mxArray 内存泄露问题
- leakcanary作者发现的一个Dialog的各种listener容易引发的内存泄露问题
- Unity3D关于内存优化,内存泄露、多线程、引用C++的dll的问题研究
- C++。memory leak检查办法。一个当内存分配后未回收(或导致各种问题)的检查办法
- 一个常见的android内存泄露 问题
- 一个Unity材质赋值内存泄露问题
- c/c++中利用gsoap调用webservice服务的一个诡异问题解决方法
- 介绍一个c++检测内存泄露工具:Visual Leak Detector