在linux上,使用gcc作爲編譯器,我得到了臭名昭着的核心轉儲錯誤。 全球聲明:分段錯誤:初始化大容量陣列時發生核心轉儲
#define MAX_N 10000
double cost[MAX_N][MAX_N]={0};
int stack[MAX_N];
int visited[MAX_N];
發生錯誤(消失一旦我註釋掉這些行):
for(q=0;q<5;++q)
{
visited[q]=0;
stack[q]=0;
}
這段代碼就在於其中一個被調用函數內部10,000+數倍。所以每次調用該函數時,都需要完成這個初始化過程!我試過使用memset,但是這似乎也沒有幫助!
這不一定就是發生錯誤的地方。註釋掉這些行可能會改變導致其他代碼崩潰的原因 –
10000不是一個大尺寸。顯然,這個錯誤在別的地方。這種錯誤是很正常的,可以觸發遠離原點的故障。 – ivg
如何跟蹤發生錯誤的位置? –