调用 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。 相关内容 Textmate 中的键盘快捷键丢失了 - 如何恢复? 我无法让原本可以正常运行的 Powershell 脚本按计划运行 在 pgfplots 中强制网格为正方形 如何在启动时禁用特定的 Excel 2010 加载项? Thunderbird 和 Yahoo webmail 之间的删除交互 使用 ssh-key SSH 登录同一台机器时不断提示输入密码 在 KVM 中启动原始磁盘 VMWare 和 VirtualBox 机器 学校实践:“屏幕保护程序” 更改 Windows 7 的默认等宽字体? 单个 Python 脚本的 NOPASSWD