Code Fix

上級delete後のポインタ使用が「たまたま動いてしまう」危険性 › パターン3

delete後のポインタ使用が「たまたま動いてしまう」危険性

deleteした直後の同じポインタを使って読み書きしてしまうバグです。

 1  #include <iostream>
 2  int main() {
 3      int *n = new int(7);
 4      delete n;
 5      _______________________________
                       ^
 6      return 0;
 7  }
出力: 実行のたびに変わりうる無関係な値(クラッシュはしない)危険性: 未定義動作。たまたま動いているだけ

空欄を埋めてコンパイル・実行を通す

広告
広告スロット(未設定)

delete後のポインタ使用が「たまたま動いてしまう」危険性

未定義動作であるにもかかわらず、解放直後のメモリはすぐには再利用されないことが多く、正しい値が読めてしまうことがあります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)