调用 malloc 时 vm_area_struct 会改变吗? 2024-6-7 • linux-kernel virtual-memory 我正在读一本关于 Linux 虚拟内存区域的教科书 可以看到,avm_area_struct与虚拟内存中的一个区域相关,vm_start指向vm_end该区域的开头和结尾。 我们知道内核维护了一个brk指向堆顶的指针。所以我的问题是,假设当我们调用malloc分配所请求的内存时没有可用的空闲块,因此在这种情况下,malloc内部调用mmap或sbrk获取所请求的内存,因此brk指针将递增/增长,然后堆的vm_area_struct变化为好吧,例如vm_end将递增以指向最新的brk? 答案1 是,brk修改 VMA 以匹配更改后的分配。这发生在do_brk_flags:在检查分配是否可行并清理现有 VMA 后,更新brk会导致更新现有 VMA(如果存在适当的 VMA)或创建新 VMA。 相关内容 Virtualbox:无法访问的虚拟机? Ubuntu 12.04 LTS 空指针崩溃 修改内容的网络网关-如何做到? 我的 SSD 可用空间消失了。我该怎么办?[重复] 禁用本地 root 登录,允许 root 通过 ssh 登录 在 Ubuntu 商店中找不到首选应用程序 如何让 Macantosh HD 目录显示在 Mountain Lion 的 Finder 的收藏夹侧栏中? 对齐嵌套案例 如何有效检测 PDF 中的所有空白页? Ubuntu 16.04:CPU 压力测试