首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解C malloc和sbrk()

理解C malloc和sbrk()
EN

Stack Overflow用户
提问于 2011-12-13 13:45:45
回答 2查看 11.8K关注 0票数 1

我正在尝试理解C中malloc和sbrk之间的区别,以及它们之间的关系。据我所知,malloc和sbrk基本上是一回事,但我读到malloc使用sbrk来分配内存。这真的很让人困惑,有人能给我解释一下吗?

例如,在这个程序中,malloc调用sbrk吗?如果是这样,它会在每次被调用时简单地调用sbrk吗,那么在这个例子中调用了10次吗?

代码语言:javascript
复制
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;
}

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-13 13:48:46

sbrk从操作系统请求更多的内存。它是一个相当低级的函数,而且灵活性不高。

malloc使用sbrk,但更灵活。通常,malloc会向sbrk请求较大的内存块,然后分发这些较大的内存块。因此,大多数对malloc的调用都不会导致对sbrk的调用。

票数 9
EN

Stack Overflow用户

发布于 2011-12-13 13:53:44

malloc使用sbrk--用于更改数据段的系统调用K&R C有一个附录,介绍了使用sbrk系统调用的mallocfree的实现。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8484863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档