c 中的自定义内存分配器

标签 c memory-management operating-system heap-memory

我找到了描述自定义内存分配器工作原理的链接:

https://github.com/lovelaced/muhalloc/blob/master/mem.c

为什么 Mem_Alloc() 除以 4 并将 size 增加为 4 的倍数?

这是来自该链接的功能描述:

/* Function for allocating 'size' bytes. */
/* Returns address of allocated block on success */
/* Returns NULL on failure */
/* Here is what this function should accomplish */
/* - Check for sanity of size - Return NULL when appropriate */
/* - Round up size to a multiple of 4 */
/* - Traverse the list of blocks and allocate the best free block which can accommodate the requested size */
/* -- Also, when allocating a block - split it into two blocks when possible */
/* Tips: Be careful with pointer arithmetic */
void* Mem_Alloc(int size)
    ...

最佳答案

用于对齐;并且是如何做到这一点的一个非常糟糕的例子。如果您查看 K&R 的 C 编程语言中的示例,它会向可移植、有效且易于理解的分配器提供源代码。 C是一门微妙的语言,最好先从阅读好的程序中学习。

关于c 中的自定义内存分配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55272778/

相关文章:

c - 我怎样才能把这些数字放在上面?

c - C 中的数字螺旋,代码不起作用

iphone - 使用基础 sdk 5.0 编译的应用程序可以在 iOS4.x 上运行吗?

java - 定时器运行时处理

c - 如何找出物理内存的哪些部分包含哪些进程的数据/指令?

linux - kill -9 和生产应用

c - 关于数字表示

c++ - 如何通过固定线程循环周期最小化 CPU 消耗

java - java for循环的效率

string - 在vb6中清除内存