malloc coredump(宕)的问题
??????? 最近公司一個產品在AIX5.3上,運行若干天后,經常coredump,反復加日志后,逐漸定位到是調用strdup函數后,沒有釋放空間所導致。
??????? 在AIX5.3進行了測試,發現連續malloc后的現象如下:
1)連續分配4k,測試進程coredump(宕)
2)連續分配8K,測試進程coredump(宕)
3)連續分配12k,測試進程coredump(宕)
4)連續分配12k+1,測試進程coredump(宕)
5)連續分配12k+256,測試進程coredump(宕)
6)連續分配12k+384,測試進程coredump(宕)
7)連續分配12k+448,測試進程coredump(宕)
8)連續分配12k+511,測試進程coredump(宕)
9)連續分配12k+512,不宕,malloc調用失敗,返回0
10)連續分配16K,不宕,malloc調用失敗,返回0
11)連續分配14k,不宕,malloc調用失敗,返回0
12)連續分配13k,不宕,malloc調用失敗,返回0
?
測試程序如下:
#include <stdio.h>
#include <string.h>
int main()
{
??? char * p;
??? int i=1;
??? while(i++)
??? {
??????? p=(char *)malloc(144);/*連續分配內存,不釋放*/
??????? printf("i=%d, p=%x, /n", i, p);
??????? if(p==NULL)
??????????? break;
??????? if(i%100000==0)
??????????? sleep(1);
??????? if(p==NULL)
??????????? break;
??? }
}
為什么分配不同的內存塊后,現象不一致,不解,待查。。。
轉載于:https://www.cnblogs.com/java201408/archive/2008/09/16/3901014.html
總結
以上是生活随笔為你收集整理的malloc coredump(宕)的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ssh-scan处理手记
- 下一篇: mac svn 设置代理