gpt4 book ai didi

c - 如何在 x86_64 上的前 4GB 内处理 'malloc'

转载 作者:太空狗 更新时间:2023-10-29 15:00:26 26 4
gpt4 key购买 nike

平台: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_NORESERVEMAP_32BIT,但 MacOSX mmap(2)似乎没有。

关于c - 如何在 x86_64 上的前 4GB 内处理 'malloc',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28661393/

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