内部动态内存管理



我是一名学生,想了解更多关于动态内存管理的知识。对于c++,调用operator new()可以在Heap(Free Store)下分配一个内存块。事实上,我还没有一个完整的蓝图来实现它。

有几个问题:1)操作系统分配内存块的机制是什么?据我所知,有一些基本的内存分配方案,如第一拟合、最佳拟合和最差拟合。OS是否使用其中一个在堆下动态分配内存?

2)对于不同的平台,如Android, IOS, windows等,它们是否使用不同的内存分配算法来分配内存块?

3)对于c++,当我调用operator new()或malloc()时,内存分配器是否在堆中随机分配内存块?

希望有人能帮助我。

谢谢

malloc不是系统调用,它是库(libc)例程,它通过一些内部结构为您提供所需大小的空闲内存块的地址。它只做一个系统调用,如果进程的数据段(即虚拟内存,它可以使用)不是"足够大"根据malloc的逻辑问题。(在Linux上,扩展数据段的系统调用是brk)

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

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

维基百科上有一篇关于malloc的长篇文章

相关内容

  • 没有找到相关文章

最新更新