C 语言序言和结尾的 Malloc 实现

Malloc implementation for prologue and epilogue in C

我有一个任务是编写my_free()my_malloc()函数。

但是我们如何创建尾声和序言以正确错位页眉和页脚?

假设我们使用 sbrk() 从堆中请求 4096 bytes

我有吗

void* my_malloc(size_t size)
{
    void* heapspace = sbrk();
    heapspace += 8 // ?? Do i do this to create epilogue?


}
heapspace += 8; 

不会对齐任何东西。如果你需要8字节对齐,你在未对齐的地址上加8,结果也是一样的未对齐。

您需要:

void *align(void *ptr, unsigned alignment)
{
    uintptr_t addr = (uintptr_t)ptr;

    if(addr % alignment)
    {
        addr = ((addr / alignment) + 1) * alignment;
    }
    return (void *)addr;
}
void* my_malloc(size_t size)
{
    char* heapspace = sbrk();
    heapspace += sizeof(size);   //example header size
    heapspace = align(heapspace, 8);

}