1.malloc 的实现原理:
malloc 为 C 语言的库函数,主要用来从堆中申请指定大小且连续的内存空间。实际的底层实现可能较为复杂,每个程序都带有自己的动态内存管理子模块,常见的动态内存分配算法有 best fit 和 first fit 等。由于现代操作系统用户程序都是采用虚拟地址空间,理论上对于一个程序来说,在 64 位地址空间下,它可见的地址空间为 0x0000000000000000-0xFFFFFFFFFFFFFFF,而程序中的 heap 段是虚拟地址中的一段连续的空间。程序运行时,操作系统会预先为程序分配 heap 段,虽然程序的运行,使用的 heap 空间不断增大,当操作系统已分配的空间不够使用时,这时会通过 mmap 映射新的物理内存页加入到 heap 空间中,并将新加入的物理页映射到 heap 的末尾,从而形成连续的虚拟内存空间。
2.new 与 malloc 的区别:
阅读量:2012
点赞量:0
收藏量:0