2018-06-06

mac変数deleteできないだが…

#include <iostream>
int main()
{
int *s = new int();
**s = 100;
delete s;
cout << *s << endl;
}

こんな感じのプログラムポポポーンと書いただけど、中に入れた100が見れちゃうだけど、これやばくない?

普通、何にも入ってないから、変なのが出てくるはずなんだが…;

あ、g++のバージョン9.0.0です。

頭の上にはてなが5個ぐらい並んでいる状態、どうなっているやねん(Windowsユーザー)

  • deleteはメモリを解放するが解放後の内容は未定義だから、解放前のままでも仕様には合致する

  • C++で組み込み型をnewってできたっけ

  • deleteしたかてゼロクリアされるわけではない定期

  • deleteがやるのはメモリの解放 「もう使わないよ」 という宣言であって、データがいつ削除されるかは実行環境次第 (そういう意味ではfreeのほうがいい名前だったな)

  • 全然関係ない話ですまんが s = 100; だっけ? s = 100; じゃなかったっけ? c/c++ などもう忘れてしまったよ。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん