上級 › free(): double free detected の原因と直し方(C++のdelete) › パターン1
free(): double free detected の原因と直し方(C++のdelete)
newで確保したメモリに対してdeleteを2回呼んでしまったときに出る実行時エラーです。
1 #include <iostream> 2 int main() { 3 int *p = new int(5); 4 delete p; 5 ___________________ ^ 6 std::cout << "done" << std::endl; 7 return 0; 8 }
free(): double free detected in tcache 2
Aborted
空欄を埋めてコンパイル・実行を通す
同じポインタに対してdeleteを2回呼ぶと、メモリ管理システムが不整合を検知して強制終了します。解放直後にnullptrを代入しておけば、誤って二重に解放しても実害を防げます(nullptrへのdeleteは安全な無操作です)。
次の問題