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