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;