gpt4 book ai didi

c - mmap 一个不太可能被程序的任何其他部分使用的地址

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:15 25 4
gpt4 key购买 nike

出于某种原因,我想用mmap 使用固定地址分配一 block 内存,即用MAP_FIXED。所以我想使用一个不太可能被程序的任何其他部分(堆、堆栈等)使用的地址。任何适用于 64 位系统的地址范围?

最佳答案

Linux 将尝试在可执行文件中指定的地址加载 ELF 可执行文件,该地址可以是 64 位地址空间中的任何位置。但是,除非您为链接器提供特殊选项,否则它将构建在低地址加载的可执行文件(通常为 0x0000000000400000),并合理密集地使用内存(只读和读写部分之间会有间隙) ),默认堆紧随其后。

Linux 通常使用 0x00007fff00000000-0x00007ffffffffffff 范围内的地址用于堆栈,0x00007f0000000000-0x00007fffffffffff 用于共享图书馆。它还为内核保留了 0x8000000000000000-0xffffffffffffffff

这意味着 0x00007f0000000000 和堆末尾以上的所有内容都可能是空闲的,范围 0x0000800000000000-0x7fffffffffffffff。我说有可能,因为上面的分配都是默认值,如果您将内核或链接器配置为不同,这些分配是可以更改的。

关于c - mmap 一个不太可能被程序的任何其他部分使用的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17817799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com