gpt4 book ai didi

c - 如何在 32 位地址空间内分配缓冲区?

转载 作者:可可西里 更新时间:2023-11-01 11:51:31 24 4
gpt4 key购买 nike

我想在 64 位 ARM 上的 32 位地址空间内分配一个缓冲区。换句话说,我想确保我的缓冲区绑定(bind)到较低的 32 位地址空间。你知道一个很好的 C 函数吗?

最佳答案

没有 C 标准函数可以这样做。但是,由于您将问题标记为 Linux,请查看 mmap(2)以及 MAP_ANONYMOUSMAP_32BIT 标志,例如:

mmap(
0, 1,
PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT,
-1, 0
);

另一种选择是使用 MAP_FIXED 标志在低 32 位地址空间中传递一个显式地址:

mmap(
(void *)0x10000, 1,
PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED,
-1, 0
);

关于c - 如何在 32 位地址空间内分配缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49534672/

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