使用char数组作为内存的自定义malloc实现

时间:2014-11-10 08:43:25

标签: c memory-management malloc free

我在C编程方面真的很糟糕。我被要求做以下任务 实现类似内存分配库的malloc。

  1. 声明一个20000字节的数组。

  2. 您必须实现类似malloc()的函数。称之为MyMalloc()。它的签名类似于malloc()。您还应该实现MyFree(),它具有与free()类似的签名和功能。

  3. MyMalloc()仅从前面提到的20000字节数组中分配内存。

  4. 管理内存所需的所有数据结构也必须位于同一个数组中。

  5. MyMalloc()和MyFree()必须位于名为mymalloc.c的文件中。您还应该提供合适的头文件mymalloc.h。

  6. 有人可以告诉我如何解决这个问题。我真的很无能为力。先感谢您。

1 个答案:

答案 0 :(得分:0)

好的 - 这是一个起点 - 实际的MyMalloc / MyFree函数的实现留给你做...

文件:mymalloc.h

#include <stdlib.h>

void * MyMalloc(size_t size);
void MyFree(void * ptr);

文件:mymalloc.c

#include "mymalloc.h"

#define POOL_SIZE 20000

static char pool[POOL_SIZE];

void * MyMalloc(size_t size)
{
     // TBD
}

void MyFree(void * ptr)
{
     // TBD
}

请注意,您可能需要一个合适的数据结构来管理内存池中的分配 - 通常会使用一个或多个链接列表,但也有其他选择。