-1

任何理由 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;
4

2 回答 2

0

最有可能的是,从我可以看到的代码片段中,您state.program_counter超出了数组的大小state.mem。确保它不是意外负数或大于或等于NUMMEMORY

于 2013-02-02T04:37:19.163 回答
0

与其将您的状态机分配为堆栈变量,不如将其分配给malloc()然后使用?

像这样:

stateType state = malloc(sizeof(stateType));

于 2013-02-02T04:30:02.747 回答