上級 › delete後のポインタ使用が「たまたま動いてしまう」危険性 › パターン1
delete後のポインタ使用が「たまたま動いてしまう」危険性
deleteした直後の同じポインタを使って読み書きしてしまうバグです。
1 #include <iostream> 2 int main() { 3 int *p = new int(42); 4 delete p; 5 _________________________________ ^ 6 return 0; 7 }
出力: 実行のたびに変わりうる無関係な値(クラッシュはしない)危険性: 未定義動作。たまたま動いているだけ
空欄を埋めてコンパイル・実行を通す
deleteは確保していた領域を「他の用途に使ってよい」と管理システムに伝えるだけで、中身を即座に上書きするとは限りません。解放直後のメモリはすぐには再利用されないことが多く、たまたま動いてしまうことがあります。
次の問題