Segfault访问或设置struct成员

时间:2015-01-23 07:54:58

标签: c struct segmentation-fault

自从我使用指针或C以来,已经有一段时间了。我正在为学校开展一个项目(malloc实施相关),但是由于我遇到了段错误问题而无法在初始阶段取得进展,我知道在调试之后它出了什么问题,但我和#39;我不知道为什么。这是代码:

typedef struct blah bloo;

struct blah {
    int c;
    bloo *next;
};

int init_func() {
    bloo *foo = (bloo*) sbrk(0);
    sbrk(10000);
    foo->c = 0; //Where the segfault occurs
    ....
    return 9001;
}

我很欣赏任何有关正确道路的帮助或建议。提前谢谢!

2 个答案:

答案 0 :(得分:1)

使用sbrk(0)分配0字节的内存。我认为你真正想要的是

 bloo *foo = (bloo*) sbrk(sizeof(struct blah));

另请注意,sbrk的手册页说:

Avoid using brk() and sbrk(): the malloc(3) memory allocation 
package is the portable and comfortable way of allocating memory.

期望您的程序/实现在不同的体系结构上表现不同。

答案 1 :(得分:1)

包括sys / types.h解决了这个问题。