Code Fix

上級new[]とdeleteの不一致が「たまたま動いてしまう」危険性 › パターン3

new[]とdeleteの不一致が「たまたま動いてしまう」危険性

new[]で確保した配列に対して、delete[]ではなく単体用のdeleteを使ってしまう不一致です。

 1  #include <iostream>
 2  int main() {
 3      char *buf = new char[64];
 4      _____________
              ^
 5      std::cout << "done" << std::endl;
 6      return 0;
 7  }
出力: done(クラッシュせず動いてしまう)危険性: 未定義動作であり保証された動作ではない

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

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

new[]とdeleteの不一致が「たまたま動いてしまう」危険性

未定義動作であるにもかかわらず、int型のような単純な配列ではクラッシュせずに動いてしまうことがあります。

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

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