c++ - 用户替换 Malloc

标签 c++ memory dynamic malloc allocation

我想就我自己的项目向您寻求帮助。 我想尝试用我自己的函数替换原始的 malloc、自由函数,它们将具有相同的行为。

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

memory_init 函数将创建要使用的内存。在开始时会有一个指针,例如 *Memory,它将成为 memory_init 的参数。 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 将在每次调用时在此内存中创建 block 。 如果有人知道如何制作它,我将很高兴看到您的回答。 对不起我的英语不好。 谢谢。

对于 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;

}

我的想法是做一个内存块,里面会有小块。每个 block 都会有头。在第一个位置会有 block 的大小,在它之后会有标签,如果它是空闲的,在它之后会有 block 的结束。

最佳答案

经典的 Kernighan&Ritchie“The C Programming Language”的第 8.7 节用简单的术语准确描述了您的要求。您可以在 Web 上的不同位置找到它的拷贝。您还可以找到更复杂的 malloc 实现 herehere

关于c++ - 用户替换 Malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19479852/

相关文章:

c++ - 一旦执行完成就杀死子进程(在fork之后)

java - 公共(public)方法中的私有(private)参数

vba - 如何通过 CallByName 传递参数数组 ByRef?

css - 动态居中 Div

ruby - 构建不同级别的嵌套循环

c++ - 如何获取列表中出现频率最高的元素?

android - 如何使用opencv从android IPWebcam获取MJPG流视频

python - 如何增加 Jupyter notebook 内存限制?

c - 从用户空间访问内核内存(task_struct)

c - realloc 不是重新分配内存