【TLPI读书笔记】 七、内存分配
在堆上分配内存
进程可以通过增加堆的大小来分配内存,所谓堆是一段长度可变的连续虚拟内存,始于进程的未初始化数据段末尾,随着内存的分配和释放而增减。通常将堆的当前内存边界称为“program break
”。
调整program break
:brk()
和sbrk()
改变堆的大小其实就是命令内核改变进程program break
的位置,最初program break
正好位于未初始化数据段末尾之后。
在program break
位置抬升后,程序可以访问新分配区域内的任何内存地址,而此时物理内存尚未分配。内核会在进程首次试图访问这些虚拟内存地址时自动分配新的屋里内存页。