上級 › delete後のポインタ使用が「たまたま動いてしまう」危険性 › パターン2
delete後のポインタ使用が「たまたま動いてしまう」危険性
deleteした直後の同じポインタを使って読み書きしてしまうバグです。
1 #include <iostream> 2 int main() { 3 int *value = new int(100); 4 delete value; 5 _____________________________________ ^ 6 return 0; 7 }
出力: 実行のたびに変わりうる無関係な値(クラッシュはしない)危険性: 未定義動作。たまたま動いているだけ
空欄を埋めてコンパイル・実行を通す
「エラーなく動いたのだから解放は間違っていなかった」というのは誤解です。プログラムが複雑になり別の場所で確保・解放が起きるようになると、突然壊れた値が現れることがあります。
次の問題