C++ scoped_ptr内存泄漏查证

前几天遇到个问题,使用scoped_ptr管理的对象发生内存泄漏。

解决过程:

通过MAT工具发现java实例泄漏,标注Native stack,

于是跑到jni/C++去找,通过打log发现析构函数没有调用。

奇怪的是这个对象使用scoped_ptr管理,整个指针在代码里没有什么非法操作,应该可以自动销毁。

于是在实例release时强行析构(调用scoped_ptr reset() ),发现实例成功释放。

再次回到代码,查找循环引用和不规范的使用指针依然无果。。。。

最后发现是父类没有定义vitrual 的析构函数。

由此总结下C++中使用智能指针依然发生内存泄漏的debug思路

1、在代码中查找循环引用等不规范问题

2、查看父类的析构函数

未完待续

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容