#include <iostream> int main() { int *s = new int(); **s = 100; delete s; cout << *s << endl; }
こんな感じのプログラムをポポポーンと書いただけど、中に入れた100が見れちゃうだけど、これやばくない?
普通、何にも入ってないから、変なのが出てくるはずなんだが…;
あ、g++のバージョンは9.0.0です。
頭の上にはてなが5個ぐらい並んでいる状態、どうなっているやねん(Windowsユーザー)
Permalink | 記事への反応(5) | 14:16
ツイートシェア
deleteはメモリを解放するが解放後の内容は未定義だから、解放前のままでも仕様には合致する
C++で組み込み型をnewってできたっけ
deleteしたかてゼロクリアされるわけではない定期
deleteがやるのはメモリの解放 「もう使わないよ」 という宣言であって、データがいつ削除されるかは実行環境次第 (そういう意味ではfreeのほうがいい名前だったな)
全然関係ない話ですまんが s = 100; だっけ? s = 100; じゃなかったっけ? c/c++ などもう忘れてしまったよ。