内存泄漏是指程序动态申请的内存在使用后没有释放,导致这块内存没有被操作系统回收和重用。
例如,这个程序请求了4个字节的空间但没有释放它,导致了4个字节的内存泄漏。
当发生内存泄漏时,重启可以恢复泄漏的内存。但对于Linux来说,服务器程序通常是在运行的,并且无法重新启动。您需要特别小心内存泄漏。
内存泄漏的特征难以重现——只有运行足够长的时间后才会暴露。
很难发现——错误位置是随机的,与内存泄漏代码没有联系。
最简单的方法为了避免编写出现内存泄漏的程序,通常有编程规范要求我们在编写程序时使用和转义对。因为每一个应用都意味着必须有一个与之对应的版本。
基于这个函数,一个简单的方法就是统计代码中的申请数和发布数。如果申请和释放的次数不同,则认为是内存泄漏。
#include"stdio.h"#include"stdlib.h"intmalloc_count,free_count;void*my_malloc(intsize)观、易懂、易于实现
运行该方法的缺点:在运行结束时更新只能通过分析输出才能知道结果所产生的。
2.该方法需要包装所有适用的函数并释放空间,并修改调用位置以调用包装的函数。虽然C中的申请/释放内存接口不多,但对于一个大型项目来说,调用这些接口的地方很多,全部替换是一个比较大的工作量。
3仅适用于C语言,不适用于C++
4。如果想在库中使用,需要更改库代码
6它无法解释是哪一行代码导致了泄漏。如果想知道如何改进的话,我们下次再细看一下。
上一篇:android内存泄漏的原因
下一篇:导致内存泄露的原因