タダで使えるBorland C++ Part5 at TECH
[2ch|▼Menu]
114:デフォルトの名無しさん
06/02/27 00:42:51
>>113
いや、正しくデストラクタが呼ばれない。
108のAとBが仮装デストラクタを持っているとしてこういうコードがあったとする。
A *a = new B[10];
delete[] a;
仮にnew B[10]の結果(アドレス)が0x8000だったとする。
sizeof (B)は8だから要素はそれぞれ0x8000, 0x8008, 0x8010, ......, 0x8050に置かれることになる。

一方delete[] a;では開放する前にデストラクタを呼ぼうとする。
sizeof (A)は4だから各要素は0x8000, 0x8004, 0x8008, ......, 0x8028にあるとしてそれぞれデストラクタを呼ぼうとしてしまう。
だからいけない。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5492日前に更新/217 KB
担当:undef