欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

malloc coredump(宕)的问题

发布时间:2025/3/8 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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(宕)的问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。