内存泄露(Memory leak)指的是,在程序中动态申请的内存,在使用完后既没有释放,又无法被程序的其他部分访问。内存泄露是在开发大型程序中最令人头疼的问题,以至于有人说,内存泄露是无法避免的。其实不然,防止内存泄露要从良好的编程习惯做起,另外重要的一点就是要加强单元测试(Unit Test),而valgrind就是这样一款优秀的工具。
(1):程序发生内存泄露的条件及各种情况:
a: 内存申请忘记释放(malloc,free();new,delete);
b:申请内存大小不正确((char*)malloc(0));
c:free()函数使用不正确(int a[];free(a)释放了栈区参数);
d:一段内存释放多次(1个malloc,多个free());
(2):检测程序是否发生内存泄露:
方法有二:
a:模仿用户长时间使用设备;
b:针对某个具体的测试用例。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
内存泄漏
+关注
关注
0文章
38浏览量
9166 -
单元测试
+关注
关注
0文章
33浏览量
3062
发布评论请先 登录
相关推荐
如何发现内存泄漏
检测两个角度介绍在 Linux 环境进行内存泄漏检测的方法,并重点介绍静态分析工具 BEAM、动态监测工具 Valgrind 和 rational purify 的使用
如何写一个内存泄漏检测工具
如何确定有内存泄露问题,如何定位到内存泄露位置,如何写一个内存泄漏检测工具? 1:概述 内存泄露本质:其实就是申请调用malloc/new,
什么是内存泄漏?如何避免JavaScript内存泄漏
JavaScript 代码中常见的内存泄漏的常见来源: 研究内存泄漏问题就相当于寻找符合垃圾回收机制的编程方式,有效避免对象引用的问题。
发表于 10-27 11:30
•128次阅读
高级内存调试和泄漏检测1.0版
它可以回答的问题和可以解决的问题包括:
·我使用了多少内存?
·我的代码中哪些部分分配的内存最多?
·是否存在内存泄漏--我在哪里没有释放内存
发表于 08-28 08:05
细说Linux内存泄漏检测实现原理与实现
在使用没有垃圾回收的语言时(如 C/C++),可能由于忘记释放内存而导致内存被耗尽,这叫 内存泄漏。由于内核也需要自己管理内存,所以也可能出
发表于 07-03 09:22
•336次阅读
记一次Rust内存泄漏排查之旅
在某次持续压测过程中,我们发现 GreptimeDB 的 Frontend 节点内存即使在请求量平稳的阶段也在持续上涨,直至被 OOM kill。我们判断 Frontend 应该是有内存泄漏了,于是开启了排查
评论