C言語なら俺に聞け(入門編)Part 73
■ このスレッドは過去ログ倉庫に格納されています
0317デフォルトの名無しさん
2010/11/14(日) 21:41:55union malloc_unit {
unsigned char size[0x04]; // unsigned long // 4byte
unsigned char[0x0C]; // 12byte
};
だとしたら、
■ = malloc_unit = 12byte
p0 p1 p2
↓ ↓ ↓
■■■■■■
↑ ↑
| p2_size
|
p1_size
(p0は最低でも16バイト以上必要、p1は最低でも1バイト以上必要、p2は最低でも1バイト以上必要)
p1 - p0 = 12 * (2 + 1) = 36byte
p2 - p1 = 12 * (1 + 1) = 24byte
こうなるかと思ってましたが、
実際にはもっとメモリ使用量を節約できるように、size は4byte、block は12byte と、単位が異なるようですね。
これだと、メモリ領域を未使用領域として再設定する場合など、フラグ関係をどこでどのようにやっているのか想像つきません。
管理用にわざわざ別テーブルを用意するなら、管理情報もふくめて、共用体としてサイズ等のヘッダに項目を作ってしまった方が単純で良いような気が。はて?
■ このスレッドは過去ログ倉庫に格納されています