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

标签 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。

有人可以告诉我如何解决这个问题吗?我实在是一无所知。先感谢您。

最佳答案

好的 - 这是一个起点 - 实际的 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/

相关文章:

c - 执行系统函数并解析输出

c - 如何在我的代码中使用 Git 的 malloc 包装器?

c - C 中 malloc 的内存泄漏问题

c - C 中的 Malloc 结构打印错误

c - C 迷宫程序中的段错误

c - 程序控制流程未按预期工作

php - 如何防止大型 Apache/PHP 文件上传失败?

java - 反射如何影响 Perm 大小?

java - 监控我的应用程序在Android中占用的内存

c - c 中 malloc 与许多结构的用法