タダで使えるBorland C++ Part5
at TECH
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