上級 › free(): double free detected の原因と直し方(C++のdelete) › パターン3
free(): double free detected の原因と直し方(C++のdelete)
newで確保したメモリに対してdeleteを2回呼んでしまったときに出る実行時エラーです。
1 #include <iostream> 2 int main() { 3 int *counter = new int(0); 4 delete counter; 5 _______________________________ ^ 6 std::cout << "done" << std::endl; 7 return 0; 8 }
free(): double free detected in tcache 2
Aborted
空欄を埋めてコンパイル・実行を通す
「deleteを呼んでも変数自体は残るので、もう一度呼んでも安全」というのは誤解です。ポインタ変数は残っても、指している先のメモリはすでに解放済みです。
次の問題