我正在尝试在 C 中编写用于调试目的的自定义分配器(作为练习),其中我将使用单个链表使用 First Fit 算法将内存的空闲列表保持在一起。我在下面显示了我想在“空内存节点”中创建的结构。
我如何在我获得的内存的前几个字节处写入头块(具体来说是一个联合)(我使用 malloc() 来最初获取一块内存),以便剩余的字节是空闲的?
这是我正在使用的工会:
/*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-----------------------^
*/
[编辑] 根据提供的建议更改了块结构。