[英]CreateFileMapping size limit in a 64-bit process
文件映射object有大小限制嗎? 我問的原因是在 MSDN 的某個地方提到了 2GB 的限制(丟失了軌道..)我還檢查了這個示例,它也需要 2GB 的大小限制:
但是我在最新的 Win 10 上嘗試了一個 40GB 的文件,沒有問題,所以我有點擔心,例如,如果舊的 Windows 沒有一些限制。
文件映射沒有 2GB 的限制。 您可以使用 3GB 選項啟動 32 位 Windows,或者當 32 位進程在 64 位系統上運行時,如果設置了正確的PE 標志,您將獲得完整的 4GB。 所有這些限制都是理論上的,您在實踐中永遠無法達到它們。
map 有多大的視圖取決於兩件事;
第一個是 32 位系統的大限制,因為進程的地址空間與系統庫、第 3 方庫(反病毒、注入的“調整”工具等)、PEB 和 TEB、系統共享區域、線程堆棧和 memory 由硬件保留。 這通常會使您的空間遠低於 2GB。 任何需要超過 500MB 的設計都應該根據需要在特定的較小范圍內更改為僅 map。
對於 64 位 Windows 上的 64 位進程,虛擬地址空間是 128 TB 范圍 0x000'00000000 到 0x7FFF'FFFFFFFF ( KB889654聲稱 8 TB,但僅適用於< Windows 8.1 )。 任何可用范圍都會變小,但您可以假設至少有幾個 TB。 40GB 沒問題,也不足以遇到系統資源不足的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.