美文网首页
C++ scoped_ptr内存泄漏查证

C++ scoped_ptr内存泄漏查证

作者: 柚子ziheLiu | 来源:发表于2017-08-23 11:09 被阅读0次

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

解决过程:

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

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

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

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

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

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

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

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

2、查看父类的析构函数

未完待续

相关文章

  • C++ scoped_ptr内存泄漏查证

    前几天遇到个问题,使用scoped_ptr管理的对象发生内存泄漏。 解决过程: 通过MAT工具发现java实例泄漏...

  • Java内存泄漏

    本文将会介绍: C++中的内存泄露 Java内存管理与垃圾回收 Java中的内存泄漏 一、C++中的内存泄露 在大...

  • 内存优化(一)内存泄漏

    1.内存泄漏 C/C++ 自己去分配内存和释放内存——手动管理malloc和free 1.1.什么是内存泄露:内存...

  • Java虚拟机(一)——JVM内存分类

    传统程序语言:由程序员手动内存管理。C/C++,malloc申请内存和free释放内存,经常导致内存泄漏。 现代程...

  • 深入Android内存泄露

    深入内存泄露 android应用层的内存泄露,其实就是java虚拟机的内存泄漏.(这里,暂不讨论C/C++本地内存...

  • c++ 内存泄漏简单检测方法

    c++自带一个简单的内存泄漏检测代码,可以让你知道程序运行结束后,是否有内存泄漏。 简单的使用方法如下: 明显可以...

  • 吉比特sp专场面试

    一面 整体算挺简单的,有括号说明的是自己觉得没答好的。 c++什么情况会内存泄漏 有什么办法避免内存泄漏 shar...

  • 【Android测试】内存泄漏检测 LeakCanary

    什么是内存泄漏和内存溢出?内存泄漏有什么危害?LeakCanary检测内存泄漏? 内存泄漏(Memory Leak...

  • 为何每次用完ThreadLocal都要调用remove()?

    什么是内存泄漏 Key 的泄漏 Value 的泄漏 如何避免内存泄露 什么是内存泄漏 内存泄漏指的是,当某一个对象...

  • java内存泄漏

    在c++中如果需要动态分配一块内存,那么就需要管理好这块内存,如果最后没有释放这块内存,就会导致内存泄漏。 在ja...

网友评论

      本文标题:C++ scoped_ptr内存泄漏查证

      本文链接:https://www.haomeiwen.com/subject/gnqddxtx.html