釋放記憶體兩次

釋放記憶體兩次是未定義的行為,例如

int * x = malloc(sizeof(int));
*x = 9;
free(x);
free(x);

從標準引用(7.20.3.2.C99 的自由功能):

否則,如果引數與之前由 calloc,malloc 或 realloc 函式返回的指標不匹配,或者如果通過呼叫 free 或 realloc 釋放了空間,則行為未定義。