我一直在网上和我的高级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