自己遇到的linux下c语言内存泄漏总结
来源:互联网 发布:苏州大学大数据培训 编辑:程序博客网 时间:2024/06/06 00:43
内存泄露问题是c语言很容易出现的问题,小程序可以很容易的发现,但是大程序就比较难发现了。
内存泄露是由于动态分配的内存没有被释放,可以使用valgrind等工具检查出来。
常见导致内存泄露的函数有malloc、calloc,以及间接使用malloc的函数strdup、strndup等。还包括mmap函数。
要避免内存泄漏需要以下函数成对出现:
malloc/free
calloc/free
strdup/free
strndup/free
mmap/munmap
<以后遇到坑,继续添加>
我遇到的问题是遇到了内存泄漏,但是valgrind没有查出来有malloc未被释放的。结果是由于mmap没有释放导致的。
$ valgrind --leak-check=yes --leak-check=full --show-leak-kinds=all ./bin/ap_collector > lost.log 2>&1
分析结果如下图:
尽管没有查出来内存泄漏,但是内存还是在快速持续增长。后来自己分析:
1、内存持续增长:定位基本上都发生在while循环内。
2、内存块速增长:说明有大量内存块被申请,没有释放。
3、没有malloc和strdup的内存泄漏:说明需要查看其它函数是否有申请大块内存。
于是基于以上几点分析,检查了我的循环处理逻辑中的代码,发现mmap申请的内存忘记释放了,添加munmap之后,内存泄露就解决了。
记录自己踩过的坑,积累经验。
0 0
- 自己遇到的linux下c语言内存泄漏总结
- linux下c检查内存泄漏的简单方法
- Linux下C语言的内存对齐
- linux下检测内存泄漏的工具
- Linux平台下的内存泄漏检测
- Linux平台下的内存泄漏检测
- linux环境下的内存泄漏检查
- C语言内存泄漏检测
- linux下c语言网络实验遇到的问题(1)
- 有关linux下eclipse写C语言遇到的问题
- Linux C 内存泄漏检测工具
- Linux C 内存泄漏检测工具
- C语言中内存泄漏的检测方法
- C语言的野指针和内存泄漏
- Linux C语言 内存越界问题总结
- Linux C语言 内存越界问题总结
- Linux下的一个很好的内存泄漏检测工具
- android内存泄漏的总结
- android SharedPreference实现登录
- Android Utils
- spring的启动过程03.2-集成mybatis
- 获取客户端IP地址
- 精通 CSS+DIV 网页样式与布局 130
- 自己遇到的linux下c语言内存泄漏总结
- java HTTP GET POST
- 精通 CSS+DIV 网页样式与布局 131
- python学习网址以及笔记
- 设置全屏
- Acitivity的生命周期,自己的理解
- 课程设计——学生信息管理系统
- 简易轮播图效果
- sqlserver与java数据类型对应