上級 › new[]とdeleteの不一致が「たまたま動いてしまう」危険性 › パターン5
new[]とdeleteの不一致が「たまたま動いてしまう」危険性
new[]で確保した配列に対して、delete[]ではなく単体用のdeleteを使ってしまう不一致です。
1 #include <iostream> 2 int main() { 3 float *data = new float[20]; 4 ______________ ^ 5 std::cout << "done" << std::endl; 6 return 0; 7 }
出力: done(クラッシュせず動いてしまう)危険性: 未定義動作であり保証された動作ではない
空欄を埋めてコンパイル・実行を通す
要素数が増えても規則は同じです。確保と解放の形を必ず揃えます。
次の問題