- C++相談室 part113
12 :デフォルトの名無しさん[sage]:2014/06/09(月) 09:48:44.15 ID:n5kzZRjz - >>11
どういう理屈でメモリーが解放されないかもしれないと思うの?
|
- C++相談室 part113
18 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:09:11.05 ID:n5kzZRjz - >>16
それらが関係ないとわかっていれば、そもそも>>11のような疑問は出てこないと思うんだけど・・・
|
- C++相談室 part113
21 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:19:38.00 ID:n5kzZRjz - >>19
(>>17にdelete無いんだけど・・・) delete getInstance() の場合 new で得られたポインタじゃないものを delete しているので、未定義動作になる。 delete *getInstance() だとすれば>>11と同じ。
|
- C++相談室 part113
22 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:22:00.23 ID:n5kzZRjz - ごめん。リロードしてなかった。
>>20 それなら>>11と同じ。
|
- C++相談室 part113
24 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:29:30.63 ID:n5kzZRjz - >>23
んなこたーない。 それ、どこ情報よ?
|
- C++相談室 part113
27 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:39:19.91 ID:n5kzZRjz - >>25
ちがう。 >>17のコードで delete getInstance() すると、↓と同じことになる。 a* b=new a; a** c=&b; delete c; delete b も delete *c も有効だが、 delete c は未定義。
|
- C++相談室 part113
29 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:44:41.57 ID:n5kzZRjz - >>26
2 は無い。(っていうか "a::b" と "b" の区別を含めていろいろ曖昧すぎる・・・) >>28 delete *getInstance() なら>>11と同じ。(って>>21に書いてるだろ・・・) しばらくレスできなくなるけど、あとはおちついてよく考えるんだ。
|