【问题标题】:custom malloc implementation using a char array as the memory使用 char 数组作为内存的自定义 malloc 实现
【发布时间】:2014-11-10 08:43:24
【问题描述】:

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

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

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

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

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

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

谁能告诉我如何解决这个问题。我真是一头雾水。先感谢您。

【问题讨论】:

  • 发布您目前编写的任何代码并指出您遇到的问题 - 然后这里的人可以帮助您取得进展。
  • 你知道 malloc() 和 free() 函数吗?
  • 我想找个方法。我真的不知道。
  • 你实际上是被要求实现一个堆,它通常被实现为一个链表。

标签: c memory-management malloc free


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-10-14
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多