c - 带有 NULL addr 的 mmap 如何工作?
问题描述
指定当mmap
与NULL
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
?
谢谢。
解决方案
不,它没有说明映射的相对位置,因此您不能对此做出任何假设。将每个映射视为与所有其他映射完全分开。
推荐阅读
- docker - ssl 证书或 nginx 代理服务器不工作
- android - 重新打开时 ViewPager 崩溃:NullPointerException SparseArray.get(int)
- html - 在打印页面中,header 中的表格不重复
- drupal-7 - 如何通过drupal 7中的表单防止管理文件中的垃圾邮件?
- javascript - 我们如何在反应原生中从 onChangeText 上的标题 TextInput 过滤数据?
- java - 为什么虽然方法中使用了值,但局部变量仍然显示警告?
- hyperledger-fabric - 我们可以在使用 Hypeledger 开发的运行区块链网络中添加新节点吗?
- javascript - JS | 比较运算符逻辑
- visual-studio - 用于 DotNetCore 2 包的 Signalr 缺少所有 javascript
- sql - 如何根据复杂条件加入2个数据框