我已经有一段时间没有使用指针或 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.
期望您的程序/实现在不同的架构上表现不同。
关于c - 访问或设置结构成员时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28105343/