我试图理解malloc和sbrk在C语言中的区别以及它们之间的关系据我所知,malloc和sbrk几乎是一回事,但我读到malloc在分配内存时使用sbrk这真是令人困惑,有人能给我解释一下吗?
例如,在这个程序中,malloc调用sbrk吗?如果是这样的话,那么每次调用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
从操作系统请求更多内存它是一个相当低级别的函数,不是很灵活。malloc
使用sbrk
,但更灵活。通常,malloc
会要求sbrk
提供大块的内存,然后分发这些大块的内存因此,大多数对malloc
的调用不会导致对sbrk
的调用。
关于c - 了解C malloc和sbrk(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8484863/