上級 › free(): double free detected in tcache の原因と直し方 › パターン2
free(): double free detected in tcache の原因と直し方
同じポインタに対してfree()を2回呼び出したときに検出されるエラーです。
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main(void) { 5 double *p = malloc(sizeof(double)); 6 *p = 1.5; 7 free(p); 8 __________________________ ^ 9 return 0; 10 }
free(): double free detected in tcache 2
Aborted
空欄を埋めてコンパイル・実行を通す
型がdoubleでも事情は同じです。1回目のfree()の後もポインタの値自体は残っているため、「まだ使えそう」に見えるのが危険なところです。
次の問題