我一直在编写 malloc 的实现,想知道是否有人可以帮助我解决这个问题。
基本上,我想在使用 sbrk() 分配内存后重用内存,并确定内存是空闲的。
所以本质上,想象我的记忆是这样的
|------------------------------|
...我做了一些分配。当我分配内存时,每个位都有一个头(h)和数据(d)。
|hddddddhddd---hdd--hddd-------|
现在我已经有了这些洞,如果我想使用图表中的第一个间隙,我该如何设置它以便它也有一个头部(h)和一个身体(dd)?
我已经到了现在我有一个指向我想要的内存位置的指针的地步。在 C 中,它由指针指向。指针具有自定义类型,其中“元”是我定义的结构。所以现在我有
metaStruct * mypointer = the memory address.
但是当我尝试做
mypointer->size = 30;
或者
mypointer->buddy = 1;
我得到一个段错误。
问题:如何设置它以使通过 sbrk() 分配的内存地址具有我的结构形式?显然我不能只使用 myPointer = malloc(sizeof(metaStruct)),因为我正在编写 malloc 本身。我也对 sbrk()'ing 更多空间不感兴趣,而是利用我指向的现有空间(我想忽略它的垃圾数据并使用空间)。
我该怎么做呢?