zoukankan      html  css  js  c++  java
  • 【C语言】一次内存泄露的分析的记录

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    pureftp 超时 mlsd
    安卓相机调用适配
    解决多个界面重复共用同一组数据导致数据同步改变(实现数据的完全深拷贝)
    PHP反射API的使用、体会、说明
    c冒泡排序
    iOS开发常用的第三方类库
    修改按钮上图片的大小-iOS
    获取手机通讯录--ios
    根据搜素的字符串改变label包含该字符串的文字
    cell点击按钮崩的一种情况
  • 原文地址:https://www.cnblogs.com/likeyiyy/p/4602551.html
Copyright © 2011-2022 走看看