首页 > 解决方案 > 带有 NULL addr 的 mmap 如何工作?

问题描述

指定当mmapNULL addr一起使用时,内核选择创建映射的(页面对齐的)地址:

mmap() 在调用进程的虚拟地址空间中创建一个新映射。新映射的起始地址在 addr 中指定。length 参数指定映射的长度(必须大于 0)。如果 addr 为 NULL,则内核选择创建映射的(页面对齐的)地址;这是创建新映射的最便携的方法。

假设我有以下代码:

void (*x)(void);
void (*y)(void);
x=mmap(NULL, 0x500, PROT..., FLAGS..., FD..., 0);
y=mmap(NULL, 0x500, PROT..., FLAGS..., FD..., 0);

这是否意味着y紧随其后x

谢谢。

标签: cmemorynullmmap

解决方案


不,它没有说明映射的相对位置,因此您不能对此做出任何假设。将每个映射视为与所有其他映射完全分开。


推荐阅读