1
我試圖釋放字符串數組以這種方式:免費字符串數組給SIGABRT
unsigned char **strings = words.strings;
for (int i = 0; i < noOfWords; ++i) {
free(strings + i);
}
,但我得到的消息SIGABRT
(錯誤代碼134):
免費():無效的指針:0x0000000001c69018
但是,如果我這樣做:
unsigned char **strings = words.strings;
for (int i = 0; i < noOfWords; ++i) {
free(strings[i]);
}
然後一切正常。
有人能指出我的區別嗎?這兩種形式不應該等同嗎?
是的,它非常明顯! – Alex
我不應該問這個問題。我應該花更多的時間在它上面。這個想法是,當我釋放(字符串+ 0)時,整個字符串數組已被清除。但是當它釋放(string + 1)時,程序拋出了一個SIGABRT – Alex
@SouravGhosh,謝謝! +1 – kay