簡體   English   中英

如何在x86_64上的前4GB內'malloc'

[英]How to 'malloc' within first 4GB on x86_64

平台:Mac OS X.
郎:Obj-C / C.

有可能以某種方式讓'malloc'在進程地址空間的前4GB內分配內存嗎?

我正在模擬i386堆棧,需要保證地址位於允許的32位范圍內。

使用mmap + MAP_FIXED需要在任何'malloc'之前保留內存,這不太方便。 帶有約束的'malloc'會更方便。

除非您編寫自己的malloc實現(或深入了解某些現有malloc的實現細節,然后根據您的需要進行更改),否則這是不可能的。

大多數malloc -s實現都使用系統mmap (或sbrk系統調用 (例如,參見Linux上的syscalls(2)和MacOSX的內存(3) ),這些實現了一些任意的內存地址(例如,因為ASLR ,很有用)。

PS。 在Linux上,您可以將mmap(2)MAP_NORESERVEMAP_32BIT ,但MacOSX mmap(2)似乎沒有它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM