我试图了解 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
从操作系统请求更多内存。这是一个非常低级的功能,不是很灵活。
malloc
使用 sbrk
,但更灵活。通常,malloc
会向 sbrk
请求大块内存,然后分发这些大块的一部分。因此,大多数对 malloc
的调用将不会导致对 sbrk
的调用。
关于c - 了解 C malloc 和 sbrk(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8484863/