访问C中的结构时会出现分段错误

访问C中的结构时会出现分段错误,c,struct,segmentation-fault,C,Struct,Segmentation Fault,这行C代码会给我一个分段错误的原因是什么?因为它是,所以状态是一个结构 dec_to_bin( state.mem[ state.program_counter ], mc_binary ); 我试过做一些作业,比如 int program_counter_temp = state.program_counter; dec_to_bin( state.mem[ program_counter_temp ], mc_binary ); 但它也不起作用。当我有这些作业时,我甚至不输入main 这

这行C代码会给我一个分段错误的原因是什么?因为它是,所以状态是一个结构

dec_to_bin( state.mem[ state.program_counter ], mc_binary );
我试过做一些作业,比如

int program_counter_temp = state.program_counter;
dec_to_bin( state.mem[ program_counter_temp ], mc_binary );
但它也不起作用。当我有这些作业时,我甚至不输入main

这是状态结构

typedef struct stateStruct {
int pc;
int mem[NUMMEMORY];
int reg[NUMREGS];
int numMemory;
} stateType;

与其将状态机作为堆栈变量分配,为什么不
malloc()
it然后使用它呢

像这样:


stateType state=malloc(sizeof(stateType))

最有可能的是,从我看到的代码片段中,您的
状态.program\u计数器
超出了数组
状态.mem的大小。请确保它不是意外地为负值,或大于或等于
nummery

问题不在这里,您应该提供更多的上下文,因为现在只是猜测。这是导致SEGFULT的原因。我已尝试删除它,然后再次添加它。赋值是在for循环中完成的,这是这里真正缺少的唯一上下文。您是否使用了
gdb
状态.程序计数器的值是多少?state.mem的数组大小是多少?
dec\u to\u bin
是宏吗?什么是
mc_binary
?0和65536,我不能使用gdb,因为程序在进入main之前崩溃。dec_to_bin是一个需要两个整数的函数调用。mc_二进制是一个int。如果程序在main之前崩溃,一种可能性是您试图将整个庞大的结构放在堆栈上。。。