我的C编程水平真的很差。我被要求执行以下任务 实现一个类似malloc的内存分配库。
声明一个 20000 字节的数组。
您必须实现一个类似于 malloc() 的函数。称之为 MyMalloc()。它的签名类似于malloc()。您还应该实现 MyFree(),它的签名和功能与 free() 类似。
MyMalloc() 仅从前面提到的 20000 字节数组中分配内存。
管理内存所需的所有数据结构也必须驻留在同一个数组中。
MyMalloc() 和 MyFree() 必须位于名为 mymalloc.c 的文件中。您还应该提供一个合适的头文件 mymalloc.h。
有人可以告诉我如何解决这个问题吗?我实在是一无所知。先感谢您。
最佳答案
好的 - 这是一个起点 - 实际的 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
}
请注意,您可能需要一种合适的数据结构来管理内存池中的分配 - 通常为此使用一个或多个链接列表,但还有其他选择。
关于使用 char 数组作为内存的自定义 malloc 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26839770/