我试图理解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/

10-13 06:30