C++相談室 part61
at TECH
143:デフォルトの名無しさん
08/03/21 13:44:43
まあ、強いて言えば、生成されたコード内に埋め込まれているって感じなのかな。
delete[] p;するときに、各要素のデストラクタを起動しなければならないわけだけど、
要素数は p = new T[count]; のcountで、実行時に変わる可能性のあるものだから、
ポインタの前かなんかに隠しておかなければならないわけ。
ちなみに、メモリブロックを単純に解放するだけなら要素数を隠しておく必要はないよ。
free()にサイズを指定しないでしょ?
メモリマネージャはメモリブロックの総バイト数をどこかに隠しておくかもしれないけど、それは別の話。
あとは、
T *p;
for(size_t i = 0; i < count; i++){
p->destruct();
++p; //←これ
}
これの++pがどうコンパイルされるかという、>>139が言うようにC言語レベルの基本的な話。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4586日前に更新/200 KB
担当:undef