我试图理解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;
}
Run Code Online (Sandbox Code Playgroud)
谢谢,
sbrk从操作系统请求更多内存.这是一个非常低级的功能,并不是很灵活.
malloc使用sbrk,但更灵活.一般来说,malloc会要求sbrk大块的内存,然后分发那些大块的内容.因此大多数呼叫malloc都不会导致呼叫sbrk.