c - 访问或设置结构成员时出现段错误

标签 c struct segmentation-fault

我已经有一段时间没有使用指针或 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/

相关文章:

c - 如何拒绝 C 中的套接字连接?

c - 如何计算两个地址之间的距离?

我可以将整数分配给字符指针数组吗?

c - 函数返回结构时出错

c - 在结构的二维数组中分配内存时出现问题

c++ - 使用 strcat 后删除字符数组会导致段错误

c - ZMQ、PUB/SUB、删除 "sleep"时丢失消息

动态遍历结构中的每个字段并更改它们

c - 将数据添加到从循环内的结构读取的数组中

std::string 函数中的 C++ 段错误