段错误访问或设置结构成员

Segfault accessing or setting struct member

我已经有一段时间没有使用指针或 C 语言了。我正在为学校做一个项目(malloc 实现相关),但在初始阶段之后无法取得进展,因为我遇到了段错误问题,并且我知道在调试后哪里出了问题,但我不确定为什么。这是代码:

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;
}

对于正确路径的任何帮助或建议,我将不胜感激。提前致谢!

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.

希望您的 program/implementation 在不同的架构上表现不同。

包含 sys/types.h 解决了问题。