自从我使用指针或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;
}
我很欣赏任何有关正确道路的帮助或建议。提前谢谢!
答案 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解决了这个问题。