码迷,mamicode.com
首页 > 编程语言 > 详细

【C语言】一次内存泄露的分析的记录

时间:2015-06-26 17:58:00      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

今天运行一个程序,程序刚启动时占用内存很小,在运行过程中发现占用的内存会一直增大。

用cat /proc/pid/statm的方式查看发现也确实在一直增大。

而且这个程序移植到另外一个平台后,会直接无法运行。

——————————————————————————————————————————

我不明白为什么,以为哪里内存泄露了,但是这几乎不可能啊,因为我所有的内存分配都是初始化时完成的,

分配了一些pool和queue,在while(1)大循环中根本没有分配内存啊。

我然后用Valgrind工具检查了一下,当然我有一大堆内存分配都没有free,但是这对我来说没关系,因为我

while(1)中并不会继续malloc。

——————————————————————————————————————————

然而见鬼了,整个运行过程中就是会会一直增大。

到底怎么回事呢?怎么回事呢?

原来是因为malloc之后,分配的内存直到真正用到之时才会分配,而在嵌入式平台上,好像它会提前分配好。

这个malloc的特性我当然知道,这一次之所以没有注意到,是因为我认为我分配的内存是远远小于机器的内存的,即使全部占用了, 也不会一直增加,

而实际情况是,我分配的内存确实太大了,超过了机器的内存,当超过时,就直接报错了,这个时候我直觉的反应是哪里泄露了,而没有想malloc的问题。

因为我写了一个新库,我以为是新库的问题。

 

【C语言】一次内存泄露的分析的记录

标签:

原文地址:http://www.cnblogs.com/likeyiyy/p/4602551.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!