c-编写自己的malloc



我正在编写自己的malloc(),并且我已经配置了以下

struct myblock
{
    struct myblock *next;
    struct myblock *prev;
    int isFree;
    unsigned availablesize;
    char *buffer;
}

和空格#定义MEM_BUFFER(1024),它将是"我的ram"。如果我没有错,那么我会有

char *array[MEM_BUFFER];

有1024字节的数组(如果我错了,请纠正我)。

正如我们所知,MEM_BUFFER也将包含占用空间的元数据。我有点困惑,我该怎么开始。

这是我的主要问题。我应该在每个分配请求中将结构分配给数组吗(如果是,则从struct-char-array?)。

我应该在堆上处理双链表并跳过数组中的sizeof(myblock)字节吗。

在过去的两天里,我一直在思考这个解决方案,但我仍然感到困惑。

否,

char *array[MEM_BUFFER];

通常不是1024字节的数组(除非MEM_BUFFER被设置为1024 / sizeof (char *))。它是一个MEM_BUFFER字符指针的数组。

你只需要:

char array[MEM_BUFFER];

尽管更好的名称可能是CCD_ 4。

要使它由块组成,您需要一个额外的指针,即第一个块:

struct myblock *heap = (struct myblock *) heap_space;

然后你可以初始化:

heap->next = NULL;
heap->prev = NULL;
heap->isFree = 1;
heap->availablesize = sizeof heap_space - sizeof *heap;

由于不确定struct myblock.buffer应该做什么,我将块放在堆中,因此块的用户内存位于(void *) (block + 1)

相关内容

  • 没有找到相关文章