上級 › free(): double free detected の原因と直し方(C++のdelete) › パターン2
free(): double free detected の原因と直し方(C++のdelete)
newで確保したメモリに対してdeleteを2回呼んでしまったときに出る実行時エラーです。
1 #include <iostream> 2 int main() { 3 int *val = new int(10); 4 delete val; 5 _______________________ ^ 6 std::cout << "done" << std::endl; 7 return 0; 8 }
free(): double free detected in tcache 2
Aborted
空欄を埋めてコンパイル・実行を通す
deleteされたポインタはダングリングポインタ(解放済み領域を指したままの変数)になります。それに対して再度deleteを呼ぶと管理情報の不整合が起きます。
次の問題