【C语言】一次内存泄露的分析的记录
今天运行一个程序,程序刚启动时占用内存很小,在运行过程中发现占用的内存会一直增大。
用cat /proc/pid/statm的方式查看发现也确实在一直增大。
而且这个程序移植到另外一个平台后,会直接无法运行。
——————————————————————————————————————————
我不明白为什么,以为哪里内存泄露了,但是这几乎不可能啊,因为我所有的内存分配都是初始化时完成的,
分配了一些pool和queue,在while(1)大循环中根本没有分配内存啊。
我然后用Valgrind工具检查了一下,当然我有一大堆内存分配都没有free,但是这对我来说没关系,因为我
while(1)中并不会继续malloc。
——————————————————————————————————————————
然而见鬼了,整个运行过程中就是会会一直增大。
到底怎么回事呢?怎么回事呢?
原来是因为malloc之后,分配的内存直到真正用到之时才会分配,而在嵌入式平台上,好像它会提前分配好。
这个malloc的特性我当然知道,这一次之所以没有注意到,是因为我认为我分配的内存是远远小于机器的内存的,即使全部占用了, 也不会一直增加,
而实际情况是,我分配的内存确实太大了,超过了机器的内存,当超过时,就直接报错了,这个时候我直觉的反应是哪里泄露了,而没有想malloc的问题。
因为我写了一个新库,我以为是新库的问题。
【C语言】一次内存泄露的分析的记录的更多相关文章
- 五、jdk工具之jmap(java memory map)、 mat之四--结合mat对内存泄露的分析、jhat之二--结合jmap生成的dump结果在浏览器上展示
目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...
- (转)专项:Android 内存泄露实践分析
今天看到一篇关于Android 内存泄露实践分析的文章,感觉不错,讲的还算详细,mark到这里. 原文发表于:Testerhome: 作者:ycwdaaaa ; 原文链接:https://teste ...
- 关于Android 的内存泄露及分析
一. Android的内存机制Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似.程序员通过new为对象分配内存,所有对象在java堆内分配空间:然而对象的释 ...
- 关于Android 的内存泄露及分析(转)
一. Android的内存机制Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似.程序员通过new为对象分配内存,所有对象在java堆内分配空间:然而对象的释 ...
- 查看w3wp进程占用的内存及.NET内存泄露,死锁分析
一 基础知识 在分析之前,先上一张图: 从上面可以看到,这个w3wp进程占用了376M内存,启动了54个线程. 在使用windbg查看之前,看到的进程含有 *32 字样,意思是在64位机器上已32位方 ...
- 查看w3wp进程占用的内存及.NET内存泄露,死锁分析--转载
一 基础知识 在分析之前,先上一张图: 从上面可以看到,这个w3wp进程占用了376M内存,启动了54个线程. 在使用windbg查看之前,看到的进程含有 *32 字样,意思是在64位机器上已32位方 ...
- ThreadLocal是否会引发内存泄露的分析(转)
这篇文章,主要解决一下疑惑: 1. ThreadLocal.ThreadLocalMap中提到的弱引用,弱引用究竟会不会被回收? 2. 弱引用什么情况下回收? 3. JAVA的ThreadLocal和 ...
- ThreadLocal是否会引发内存泄露的分析 good
这篇文章,主要解决一下疑惑: 1. ThreadLocal.ThreadLocalMap中提到的弱引用,弱引用究竟会不会被回收? 2. 弱引用什么情况下回收? 3. JAVA的ThreadLocal和 ...
- [golang]golang time.After内存泄露问题分析
无意中看到一篇文章说,当在for循环里使用select + time.After的组合时会产生内存泄露,于是进行了复现和验证,以此记录 内存泄露复现 问题复现测试代码如下所示: package mai ...
随机推荐
- JMeter Plugins Manager
JMeter插件管理器官网: https://jmeter-plugins.org/ 把jmeter-plugins-manager-0.16.jar放到C:\JMeter\apache-jmeter ...
- linux学习总结---web前端③
css3: border-radius opacity: transform: 旋转 rotate 平移translate 缩放scale 扭曲skew transition:转变 强调:开始和结束 ...
- Python 3 学习笔记之——基础语法
1. a, b = a, a + b 先计算右边表达式,然后再同时赋值给左边. 2. 条件控制和循环语句 条件控制 if condition_1: statement_block_1 elif con ...
- [leetcode-646-Maximum Length of Pair Chain]
You are given n pairs of numbers. In every pair, the first number is always smaller than the second ...
- oracle server端字符集修改
1.oracle server端字符集查询 复制代码代码如下: select userenv('language') from dual; server字符集修改: 将数据库启动到RESTRICTED ...
- Uva 294 Divisors(唯一分解定理)
题意:求区间内正约数最大的数. 原理:唯一分解定义(又称算术基本定理),定义如下: 任何一个大于1的自然数 ,都可以唯一分解成有限个质数的乘积 ,这里 均为质数,其诸指数 是正整数.这样的分解称 ...
- C#与Javascript变量、函数之间的相互调用
原文地址:http://blog.csdn.net/wonsoft/article/details/2595743 C#与Javascript变量.函数之间的相互调用 一.javascript调用C ...
- redis-20180118
1.redis hash 100% 2.redis list 100% 3.redis sentinel 20%
- bootstrap和elementUI真的会冲突
前两天,做了一个支持markdown的功能: http://www.cnblogs.com/XHappyness/p/8097756.html 后面发现预览效果某些标签需要bootstrap的支持才能 ...
- C#中的SubString()的用法
先看语法: String.SubString(int index,int length) index:开始位置,从0开始 length:你要取的子字符串的长度 例子: using ...