+ -
当前位置:首页 → 问答吧 → Segmentation fault

Segmentation fault

时间:2010-09-12

来源:互联网

Segmentation fault.
0xb767bb40 in ?? () from /lib/tls/i686/cmov/libc.so.6

这是什么错误阿?

相关代码如下:
====================================
typedef struct ABC_ *ABC;
typedef struct XYZ_ *XYZ;

struct ABC_
{
        XYZ head;
        ABC tail;
};

struct XYZ_
{
        int a;
};


函数1:
void *def_malloc(int len)
{
A =>        void *p = malloc(len);
       
        if (!p)
        {
            printf("out of memory!\n");
            exit(1);
        }
        return p;
}


函数2:
ABC abc(XYZ head, ABC tail)
{
        ABC p = def_malloc(sizeof(*p));
        p->head        =head;
        p->tail        =tail;
        return p;
}

出错点:
在调用函数 abc()时,会调用 def_malloc()为 结构(ABC)分配空间,具体就是 “指令A”(def_malloc的第一句)。但当执行“指令A”后,系统提示出错,即上面的 Segmentation fault。

另,该函数在其他地方执行正常。且单步调试“指令A”时,发现 len 为 8(应该是对的,因为 ABC 结构里就只有 2个指针,所以大小共为8字节)
====================================

作者: gah   发布时间: 2010-09-12

回复 gah


先顶一下

作者: gah   发布时间: 2010-09-12

相关阅读 更多