内存管理-内存分配
malloc是如何分配内存的?
malloc是如何分配内存的?
- 如何用户分配的内存小于128KB,通过brk()申请内存;
- 如果用户分配的内存大于128KB,通过mmap()申请内存;
其中通过brk申请的是堆内存,通过mmap申请的是文件映射区的内存。
为什么是以128KB为分界线?
malloc分配的是物理内存吗?
malloc()分配的是虚拟内存。
如果分配后的虚拟内存没有被访问的话,虚拟内存是不会映射到物理内存的,这样就不会占用物理内存。
只有在访问已分配的虚拟内存地址空间的时候,操作系统通过查找页表,发现虚拟内存对应的页没有在物理内存中,就会触发缺页中断,然后操作系统会建立虚拟内存和物理内存之间的映射关系。
malloc(1)会分配多大的虚拟内存?
free释放内存会归还给操作系统吗?
mmap缺点
brk缺点
brk分配和回收内存过程
free怎么知道要释放多大内存?
通过在申请的内存前追加头部信息,当使用free释放内存块的时候,对传入的地址向前偏移16个字节,取出头部信息分析内存块的大小,从而知道要释放多大的内存。
对于brk申请的内存块,使用free会发生什么?
对于mmap申请的内存块,使用free会发生什么?
理论上来说brk和mmap对应的free操作是不相同的,各自底层原理是什么?底层源码是什么?
内存管理-内存分配
http://example.com/2025/05/13/OperatingSystem/内存管理-内存分配/