我一直在網上和我的高級C類(例如下面的代碼)中看到相當多的錯誤代碼。雖然我明白這顯然是不好的編碼習慣,但我很難做到這一點,除了浪費CPU週期之外,這是非常糟糕的。根據我的理解,如果指針分配不在「malloc表」中(因爲缺少更好的單詞),通常會忽略它。我會很感激這裏的某個人能夠讓我更好地理解爲什麼這是糟糕的(除了這是一件愚蠢的事情)以及它的後果。double free()有什麼問題?
char* ptr = malloc(1);
...
free(ptr);
...
free(ptr);
它只是*未定義的行爲*。這意味着你的程序不能被認爲是「工作」的。這裏沒有太多要理解的東西。 – juanchopanza 2014-10-07 06:04:56
如果你想要一個超出一般未定義行爲的特定不良行爲:如果在第一個'free'返回同一個地址之後再次調用'malloc'會怎麼樣? – 2014-10-07 06:10:46
^我不明白:S ..那有什麼不好? 'malloc,free,malloc,free'?即使對malloc的兩次調用返回完全相同的地址,我也認爲這是合法的。我無法想出任何錯誤:S – Brandon 2014-10-07 06:12:42