首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

谈谈如何利用 valgrind 排查内存错误

原则 3,开启 -show-reachable=yes 命令行选项 强烈建议在运行 Memcheck 时增加 -show-reachable=yes 命令行选项,它可以帮我们检查全局指针、static...但是,请注意,still reachable 可能会掩盖真正的内存泄漏 definitely lost,这就是作者为何强烈建议开启 reachable 命令行选项的原因。...所以,作者强烈建议养成在进程结束之前优雅的释放掉静态/全局指针、做好资源的清理工作的良好编程习惯,并在使用 Memcheck 时开启 reachable 参数,竭尽所能的消灭 still reachable...Memcheck 四种指针丢失情形的代码演示 definitely lost 与 still reachable 代码演示 首先,我们先演示绝对丢失和 still reachable 这两种情况。...still reachable 掩盖 definitely lost 代码演示 最后来演示未释放全局或者静态指针导致 still reachable 掩盖了 definitely lost 报错的情况。

5.7K41

强引用,软引用,弱引用,幻象引用有什么区别?

不同的引用类型,主要体现的是对象的不同的可达性(reachable)状态和对垃圾收集的影响。...对象可达性分析 强可达(Strongly Reachable),就是当一个对象可以有一个或多个线程可以不通过各种引用访问到的情况。比如,我们新创建一个对象,那么创建它的线程对它就是强可达。...软可达(Softly Reachable),就是当我们只能通过软引用才能访问到对象的状态。...弱可达(Weakly Reachable),类似前面提到的,就是无法通过强引用或者软引用访问,只能通过弱引用访问时的状态。...幻象可达(Phantom Reachable),上面流程图已经很直观了,就是没有强、软、弱引用关联,并且finalize过了,只有幻象引用指向这个对象的时候。

4.1K10
领券