易截截图软件、单文件、免安装、纯绿色、仅160KB

linux 下C在开发板上发现内存泄露怎么办?

    我copy了一部分别人的程序,在开发板上运行一段时间后发现有内存泄露的提示,这个该怎么办,也没调试工具,只能加打印信息。
       
    其中malloc动态产生链表在程序结束的时候释放
可以把程序放到pc上先调试,在pc上调试过了,再放过去。

引用
可以把程序放到pc上先调试,在pc上调试过了,再放过去。


有很多地方必须得和开发板上信息交互才行

[Quote=引用楼主   fenglinqiu   的回复:]
我copy了一部分别人的程序,在开发板上运行一段时间后发现有内存泄露的提示,这个该怎么办,也没调试工具,只能加打印信息。

            其中malloc动态产生链表在程序结束的时候释放
[/Quote]

动态申请/释放内存的地方加打印,设置一个全局变量,每次malloc将变量++,每次free将变量--,看看是否变量为0便知道是否自己忘记释放了。

另外动态申请内存的,我习惯放在一个全局结构里,当程序结束时我会逐一检查,看看是否都正常释放了。

一步一步跟踪吧,多看看指针,内存相关的地方,先大方向跟踪,然后再逐渐缩小范围呗,程序不多的话,也可以贴出来大伙看下。



代码review一下,主要看申请内存和释放内存的地方就行了,既然已经知道结果,肯定可以看出来的。

那就多加点打印信息吧

用宏重新定义malloc和free。记录每次malloc和free的地址,然后看什么地方泄露,也可以malloc时在最后多分配几个字节,记录一个标记,free时检测标记避免越界访问。

引用


相关问答:

jsp中 <c:if test> 相关问题

在查询后将查询出来的值赋给各输入框
<c:if test="${not empty dataValue}">
      fm.SAMPLING_DATE.value=" <c:out value='${dataValue.SAMPLING_DATE}'/ ......

关于the c program 的一道题!

编写程序detab, 将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止的地方。假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位。
------------------- ......

C如何调用PHP函数

如题,请知道的高手指点一下,THANKS
PHP函数都是用C实现的~
反其道而行之~

HOHO,关键是,自已再去实现这个功能累啊,PHP有现成的就直接调用好了,

顶起,有高手点解一下,或者是我直接将PHP 源码中的 .c ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号