c - 如何在大于 4 GiB 的地址范围内 malloc

标签 c malloc

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

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

谢谢。

----编辑----

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

我在 Linux x86_64 上使用 gcc (4.2.1) 和 -m64

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

最佳答案

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

关于c - 如何在大于 4 GiB 的地址范围内 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343722/

相关文章:

c - 如何制作动态分配的结构数组?

c - malloc() 如何知道堆从哪里开始?

c - Malloc 结构数组,字段中的数据未正确保存

C 编程 : Reading data from a file, 动态分配内存,将内容放入结构体数组中

c - C中的整数数组初始化错误

c - 如何用汇编语言获取 'OR' 参数?

c++ - 为什么要这样使用 malloc?

C/Linux : setgid leaves root in list of groups

c - 在 C 中删除标点符号和大写

c - 循环不执行 C 中最后一次迭代中的最后一条语句?