首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内部动态内存管理

内部动态内存管理
EN

Stack Overflow用户
提问于 2011-09-10 15:46:13
回答 1查看 171关注 0票数 1

我是一名学生,想了解更多关于动态内存管理的知识。对于C++,调用操作符new()可以在堆(空闲存储)下分配内存块。事实上,我不知道如何实现它。

这里有几个问题: 1)操作系统可以分配内存块的机制是什么?据我所知,有一些基本的内存分配方案,如first-fit,best-fit和worst-fit。操作系统是否使用其中之一在堆下动态分配内存?

2) Android、IOS、Window等不同平台,是否使用不同的内存分配算法来分配内存块?

3)对于C++,当我调用操作符new()或malloc()时,内存分配器会在堆中随机分配内存块吗?

希望有谁能帮我。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-10 17:03:49

malloc不是系统调用,它是库(libc)例程,它通过一些内部结构为您提供所需大小的空闲内存的地址。只有当进程的数据段(即它可以使用的虚拟内存)根据malloc的逻辑不是“足够大”时,它才会执行系统调用。( Linux上放大数据段的系统调用是brk)

简单地说,malloc提供细粒度的内存管理,而OS管理可供该进程使用的更粗、更大的内存块。

不仅不同的平台,而且不同的库使用不同的malloc;一些程序(例如python)使用它的内部分配器,因为它们知道自己的使用模式,并可以通过这种方式提高性能。

有一篇关于malloc at wikipedia的长篇文章。

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

https://stackoverflow.com/questions/7370357

复制
相关文章

相似问题

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