2013-02-02 104 views
-1

在C語言中的這行代碼的任何原因會給我一個分段錯誤?因爲它是,狀態是一個結構。在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); 

,但它也不起作用。我有這些任務時甚至不會進入主體。

這是國家結構

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

問題不在這裏,你應該提供更多的上下文,因爲現在它只是猜測事情。 – Jack

+0

這是導致段錯誤的行。我試圖刪除它,然後再次添加它。賦值是在for循環中完成的,這是這裏真正缺少的唯一的上下文。 – MrWolvwxyz

+0

你使用過'gdb'嗎? 'state.program_counter'的價值是什麼?什麼是'state.mem'的數組大小? 'dec_to_bin'是一個宏嗎?什麼是'mc_binary'? – jxh

回答

0

而不是分配你的狀態機堆棧變量,爲什麼不malloc()它,然後使用

像這樣:

stateType狀態= malloc的(的sizeof(stateType));

0

很可能,從我看到的代碼片段中,您的state.program_counter超過了數組state.mem的大小。確保它不是意外消極的,或者大於或等於NUMMEMORY