如何在32位地址空间内分配缓冲区?
作者:互联网
我想在64位ARM的32位地址空间内分配一个缓冲区.换句话说,我想确保缓冲区绑定到较低的32位地址空间.您知道一个不错的C函数吗?
解决方法:
没有C标准函数可以这样做.但是,由于您将问题标记为Linux,因此请查看mmap(2)
以及MAP_ANONYMOUS和MAP_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
);
标签:32bit-64bit,arm,memory-address,c-3,linux 来源: https://codeday.me/bug/20191025/1927326.html