作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
平台:Mac OS X
朗:Obj-C/C
是否有可能以某种方式使“malloc”在进程地址空间的前 4GB 内分配内存?
我正在模拟 i386 堆栈,需要保证地址位于允许的 32 位范围内。
使用mmap+MAP_FIXED需要在任何'malloc'之前RESERVE内存,不太方便。带有约束的“malloc”会更方便。
最佳答案
这是不可能的,除非您编写自己的 malloc
实现(或深入研究某些现有 malloc
的实现细节,然后根据您的需要进行更改)。
大多数malloc
-s 实现都使用系统mmap
(或sbrk
)syscalls (参见例如 Linux 上的 syscalls(2) 和 MacOSX 上的 memory(3)),它们给出了一些任意内存地址(例如因为 ASLR ,这非常有用)。
附言。在 Linux 上,您可以使用 mmap(2)使用 MAP_NORESERVE
或 MAP_32BIT
,但 MacOSX mmap(2)似乎没有。
关于c - 如何在 x86_64 上的前 4GB 内处理 'malloc',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28661393/
我是一名优秀的程序员,十分优秀!