内存布局
栈
堆
数据段
代码段
从低地址往高地址依次是:代码段->数据段->堆->栈
mmap的地址空间是位于堆与栈之间的
malloc的实现
malloc的实现是调用brk或mmap
若分配小于128K的内存,则调用brk
数据段最上面有个edata指针,brk会将edata指针往上推\\ 回收的时候是回收到malloc库的内存池,不会归还系统
brk分配的只是虚拟地址,当访问相应内存时会发生缺页中断分配物理地址
若分配的内存大于128K,则由mmap在栈和堆之间分配一块内存
Read full article from linux内存布局
No comments:
Post a Comment