我想请您为我自己的项目提供帮助。
我想尝试用我自己的函数替换原始的malloc,free函数,它们将具有相同的行为。

int memory_free(void *ptr){}
void memory_init(void *ptr, unsigned int size){}
void *memory_alloc(unsigned int size){}

memory_init函数将创建要使用的内存。在开始时,将有例如* Memory的指针,它将是memory_init的参数。内存初始化仅在程序开始时被调用一次。
#include <string.h>

int main()
{
  char region[50];
  memory_init(region, 50);
  char* pointer = (char*) memory_alloc(10);
  if (pointer)
  memset(pointer, 0, 10);
  if (pointer)
  memory_free(pointer);
  return 0;
}

此代码是测试我的功能的示例。 Memory_init将初始化内存,而memory_alloc将为每个调用在此内存中创建块。
如果有人知道如何制作,我将很高兴看到您的回答。
对不起我的英语不好。
谢谢。

对于memory_init我有这个
*Memory;
 void memory_init(void *ptr, unsigned int size){
 *((unsigned int*)ptr)=size; //at first position there will be size of whole memory;

}

我的想法是制作一个内存块,其中将有一个小块。每个街区都会有头。在第一个位置将有一个块的大小,在它的后面将有一个标签(如果标签是免费的或不是空的),在它之后将有块的结尾。

最佳答案

经典的Kernighan&Ritchie“C编程语言”的8.7节用简单的术语准确地描述了您的要求。您可以在网上的各个地方找到它的副本。您还可以找到更复杂的malloc实现herehere

09-06 19:44