![](/img/trans.png)
[英]Strange malloc behavior won't allow more that 2GB memory allocation on a 64 bit process
[英]Enforce a 2GB memory space for a 64-bit process
而是一個理論上的問題-任何人都知道如何確保分配給64位進程的連續內存不超過2GB。
這是在移植32位C ++應用程序時出現的,該程序執行指針算術(不好!),並且依賴於減法結果以適合32位整數。 在修正指針算法以正確處理大於2GB的ptrdiff_t
值之前,為進程ptrdiff_t
2GB的內存空間可能是一種快速解決方案。
注意:目標平台包括Solaris 10,Linux和Windows。
C和C ++標准不需要調用malloc()
或operator new
來返回與先前返回的內存連續的內存,並且很少有現代系統會給出如何在進程中分配虛擬內存。
除非您能告訴我們您要定位的平台,否則您可能是這方面的SOL(可能有特定於平台的解決方案。)
重新定義全局new
和delete
運算符,以便任何大於2GB的塊分配都會失敗...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.