重複の可能性:
「new」を使用するとメモリリークが発生するのはなぜですか?
私はこのような小さな問題に遭遇しました
int main() {
int i = *new int;
delete &i;
return 0;
}
コンパイルは問題ありませんが、実行すると、シェルは次のように表示します。
a.out(38303) malloc: *** オブジェクト 0x7fff5fbff8cc のエラー: 解放されるポインターが割り当てられませんでした *** デバッグするために malloc_error_break にブレークポイントを設定します トラップの中止
その間
int main() {
int *i = new int;
delete i;
return 0;
}
期待どおりに正常に実行されます。
私を悩ませているのは、最初のケースでは「new」演算子を使用してメモリを割り当てていないということですか? 削除するとエラーになるのはなぜですか?
Webで何度か検索しましたが、適切な説明が見つかりません。なぜそれが間違っているのか誰か教えてもらえますか?ありがとう :)