Memory 内部动态内存管理

Memory 内部动态内存管理,memory,malloc,heap,new-operator,microsoft-dynamics,Memory,Malloc,Heap,New Operator,Microsoft Dynamics,我是一名学生,希望更多地了解动态内存管理。对于C++,调用运算符NeW()可以在堆(空闲存储)下分配内存块。事实上,我还没有一个完整的图片如何实现它 有几个问题: 1) 操作系统可以分配内存块的机制是什么??据我所知,有一些基本的内存分配方案,如first fit、best fit和West fit。操作系统是否使用其中一个来在堆下动态分配内存 2) 对于Android、IOS、Window等不同平台,是否使用不同的内存分配算法来分配内存块 3)对于C++,当调用操作符NeW()或MalCub

我是一名学生,希望更多地了解动态内存管理。对于C++,调用运算符NeW()可以在堆(空闲存储)下分配内存块。事实上,我还没有一个完整的图片如何实现它

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

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

3)对于C++,当调用操作符NeW()或MalCube()时,内存分配器是否在堆中分配内存块?

希望有人能帮助我


感谢

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

简单地说,
malloc
提供了细粒度的内存管理,而操作系统则管理可供该进程使用的更粗、更大的内存块

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


有一篇很长的文章是关于的。

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

简单地说,
malloc
提供了细粒度的内存管理,而操作系统则管理可供该进程使用的更粗、更大的内存块

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


有一篇很长的文章是关于。

@吴王:用复选标记将它标记为答案,以便so知道它得到了满意的回答。@吴王:用复选标记将它标记为答案,以便so知道它得到了满意的回答。