如何在地址范围> 4 GiB中分配

vyo*_*yom 2 c malloc

我正在尝试在X86_64 Linux上进行一些测试,并且我想知道如何使malloc()分配大于4 GiB范围内的返回地址

我是否必须使用单独的/自定义库覆盖malloc还是有其他简单的方法来做到这一点?

谢谢。

- - 编辑 - -

我感兴趣的是将地址当作uintptr_t)时的地址,它的虚拟地址还是物理地址都没有关系,因为我想要的就是该地址必须是大于4GiB 的

我在Linux x86_64上将gcc(4.2.1)与一起使用-m64

(希望我把问题弄清楚了)

gee*_*aur 5

malloc()是错误的工具。您想要mmap() /dev/zero(这是malloc()现代幕后的工作glibc),IIRC。(在Unix上。我相信Win32也有类似的API,但我不能告诉你它是什么。)

  • 好吧,glibc`malloc()`为您分配了`mmap()`分配请求超过128kB(可调)。无需打开`/ dev / zero`来获取匿名内存,只需将`MAP_ANONYMOUS`传递给[`mmap()`](http://www.kernel.org/doc/man-pages/online/pages /man2/mmap.2.html)。 (2认同)