我正在執行一個任務的尾部。我有它正常工作,但我似乎從隨機時間免費獲得一個錯誤。Malloc錯誤:釋放對象的校驗和不正確
我看不到,要追蹤到一個模式或除了它是一致的任何東西。
例如,如果我將我的程序稱爲「tail -24 test.in」,我會在多次運行的同一行上得到不正確的校驗和錯誤。但是,使用不同的文件甚至不同數量的行來打印回來,我將無錯地回來。
關於如何追蹤問題的任何想法,我一直試圖調試它幾個小時無濟於事。
這裏是有問題的代碼:
線被定義爲一個char **,是的malloc爲:
lines = (char**) malloc(nlines * sizeof(char *));
void insert_line(char *s, int len){
printf("\t\tLine Number: %d Putting a %d line into slot: %d\n",processed,len,slot);
if(processed > numlines -1){//clean up
free(*(lines+slot));
*(lines + slot) = NULL;
}
*(lines + slot) = (char *) malloc(len * sizeof(char));
if(*(lines + slot) == NULL) exit(EXIT_FAILURE);
strcpy(*(lines+slot),s);
slot = ++processed % numlines;
}
是插槽0或1,根據? 插槽永遠不會超過nlines-1,正確嗎? – Dre 2008-10-24 07:10:09
right模數自動回到0 – None 2008-10-24 07:15:13
您使用哪個編譯器和哪個調試器?根據這一點,他們可能會提供一些調試問題的幫助。 – 2008-10-24 08:03:43