C 写入结构时出现分段错误
我的程序中有一个C 写入结构时出现分段错误,c,pointers,struct,segmentation-fault,C,Pointers,Struct,Segmentation Fault,我的程序中有一个struct定义为: struct memregion { void *from; void *to; int mode; } 但是,当我尝试将数据写入结构的任何成员变量时 regions[j].mode = 1; 区域[j].模式=1; 或 无效*地址; 地址=(空*)0; 区域[j].from=addr; 我收到一个分割错误。我无法确定为什么会发生这种情况。请帮忙 更新: 已删除完整代码,因为它是作业的一部分。问题通过@paddy的
struct
定义为:
struct memregion {
void *from;
void *to;
int mode;
}
但是,当我尝试将数据写入结构的任何成员变量时
regions[j].mode = 1;
区域[j].模式=1;
或
无效*地址;
地址=(空*)0;
区域[j].from=addr;
我收到一个分割错误。我无法确定为什么会发生这种情况。请帮忙
更新:
已删除完整代码,因为它是作业的一部分。问题通过@paddy的回答得到了解决。为什么没有人拿起这个?还是我遗漏了什么 在
get_mem_layout
regions = 0;
然后继续以数组的形式访问区域
你是说:
num_regions = 0;
您能否保证
j
?请添加更完整的代码,例如循环。您能否粘贴与变量j
相关的代码?是的,此描述必须不正确,我们需要查看更多代码。也。。。为什么不简单地将NULL
分配给区域[n]。从?区域[10]的声明发生在哪里?您是否在同一代码块中调用get_mem_layout()?非常感谢。这确实是问题所在。我知道这是一种可怕的内存扫描方式,但这是任务的一部分,因此我必须删除完整的代码。@WaqarHameed:不过,您的操作系统(可能)会因为您试图读取分配的内存部分之外的内容而给您一个segfault。你不能只把指针指向任何你喜欢的地方,然后开始读/写。这是我通过SIGSEGV信号处理器处理的,这是任务的目标之一。
regions = 0;
num_regions = 0;