C で (演習として) デバッグ目的でカスタム アロケーターを作成しようとしています。そこでは、First Fit Algorithm を使用してメモリの空きリストを保持するために単一のリンク リストを使用します。「空のメモリノード」に作成したい構造を以下に示しました。
メモリの最初の数バイトにヘッダー ブロック (具体的には共用体) を書き込むにはどうすればよいですか?
これは私が使用しているユニオンです:
/*Define Header Structure for proper alignment*/
union header {
struct{
union header* next;
unsigned size ; /*Make it size_t*/
}s;
double dummy_align_var;
};
-------------------------------------------------------------------------------
|Next |Size of |16Byte| User is concerned only about |16Byte| |
|Free Memory |Allocated|Header| this portion of memory |Footer|Checksum |
|Address |Block |Picket| and has no knowledge of rest |Picket| |
-------------------------------------------------------------------------------
|-------Header---------| ^Address Returned to user
^------User Requested Size-----^
^-------------Memory Obtained From The Operating System-----------------------^
*/
[編集]提供された提案に従ってブロック構造を変更しました。