动态分配没有Malloc的内存

Sam*_*lch 2 c operating-system memory-management

我被赋予了动态管理内存以超越malloc速度的任务.一些要求:

1)有一个指向结构的指针

2)使用记忆的"块"

3)内存将分配一个调用

init(memory * mem, int chunk_size, int num_chunks)
Run Code Online (Sandbox Code Playgroud)

4)内存指针将全局声明.

5)不使用系统调用

所以,我已经考虑过只使用我的结构:

typdef struct {
  char *byte;
} memory;
Run Code Online (Sandbox Code Playgroud)

然后这将使我的init函数执行以下操作:

mem = new memory[chunk_size * num_chunks];
Run Code Online (Sandbox Code Playgroud)

我不知道你是否可以在C中做到这一点 - 通常我会使用malloc!然后自由我能够将指针设置为null吗?

谢谢您的帮助!

aks*_*aks 5

您可以使用系统调用实现自己的'malloc'版本进行进程内存管理...尝试brk,sbrk和mmap系统调用从内核获取内存...

这有一个易于理解的实现,您可以实现和改进

http://www.inf.udec.cl/~leo/Malloc_tutorial.pdf

  • @ssp4all更新了[链接](https://web.archive.org/web/20171014020821/http://www.inf.udec.cl/~leo/Malloc_tutorial.pdf) (4认同)