理解C malloc和sbrk()

我试图理解C中malloc和sbrk之间的区别以及它们之间的关系。 根据我的理解,malloc和sbrk几乎是一回事,但我读到malloc使用sbrk来分配内存。 如果有人向我解释,这真的令人困惑吗?

例如在这个程序中malloc调用sbrk吗? 如果是这样,它每次调用时都会调用sbrk,所以对于这个例子10次?

int main(int argc, char **argv) { int i; void *start_pos, *finish_pos; void *res[10]; start_pos = sbrk(0); for (i = 0; i < 10; i++) { res[i] = malloc(10); } finish_pos = sbrk(0); return 0; } 

谢谢,

sbrk从操作系统请求更多内存。 这是一个非常低级的function,并不是很灵活。

malloc使用sbrk ,但更灵活。 通常, malloc会向sbrk询问大块内存,然后发出大块的内容。 所以大多数对malloc调用都不会导致调用sbrk

malloc使用sbrk用于更改数据段的系统调用K&R C有一个附录,它遍历malloc的实现, free使用sbrk sys调用。