我有一个代码块,似乎是malloc
背后的代码。但是当我浏览代码时,我感觉代码的某些部分缺失了。有谁知道是否缺少该功能的一部分? malloc
是否总是将相邻的 block 组合在一起?
int heap[10000];
void* malloc(int size) {
int sz = (size + 3) / 4;
int chunk = 0;
if(heap[chunk] > sz) {
int my_size = heap[chunk];
if (my_size < 0) {
my_size = -my_size
}
chunk = chunk + my_size + 2;
if (chunk == heap_size) {
return 0;
}
}
最佳答案
malloc 背后的代码肯定比那复杂得多。有几种策略。一个流行的代码是 dlmalloc图书馆。 K&R 中描述了一个更简单的方法。
关于c - C 中的 malloc 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1583668/