调用 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。 相关内容 Dell Latitude 2120 上的触摸屏不再工作 是否存在一种算法可以确定特定屏幕的最佳布局和字体大小?[关闭] 将图像从 Excel 复制到 Microsoft Paint 时分辨率会降低 我对 bash 中双引号的使用感到困惑 我可以在 Excel(或其他程序)中标记元素,以便通过搜索标签来找到它们吗? 从源代码构建 Apache 和 Mysql 后使用 Upstart PHP 无法上传大于 200MB 的文件 将闪存驱动器格式化为可启动驱动器[重复] 当我加载数组或 siunitx 时如何消除错误? Google Chrome 中的奇怪字符