C++のポインタの勉強中にたまたま起こったんですが、
「なんでこれランタイムエラーにならないんだ?」という現象に遭遇しました。
以下ソースコードです。
VisualStudio2015で実行しました。
###該当のソースコード
cpp
1class Hoo 2{ 3 int abc; 4 5public : 6 Hoo() 7 { 8 abc = 10; 9 } 10 11 ~Hoo() 12 { 13 abc = 10; 14 } 15 16 void Hoge() 17 { 18 abc = 100; 19 } 20}; 21 22void main(){ 23 Hoo *pHoo = new Hoo(); 24 delete pHoo; 25 pHoo->Hoge(); // ここでエラーになるのでは? 26}
コメントを入れている場所で、解放済のインスタンスにアクセスしているのでエラーになるかと思ったんですが、
エラーなく実行出来てしまいました。デバッグで見ると、abcの値も100になっていました。
これって正しい挙動なんでしょうか?
ちなみに、もう一回deleteすると解放済なので当然エラーが出ました。
実装的にはアウトだと思うのですが、なんでエラー吐いてくれなかったのかがわかりません。
よろしくお願いします。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。