檔案映射物件是否有大小限制?我問的原因是在 MSDN 中某處提到了 2GB 限制(丟失了軌道..),我還檢查了這個示例,它也期望 2GB 大小限制:
https://cpp.hotexamples.com/examples/-/-/CreateFileMapping/cpp-createfilemapping-function-examples.html
但是我嘗試了一個 40GB 的檔案,在最新的 Win 10 上沒有問題,所以我有點擔心,例如,如果舊 Windows 沒有一些限制。
uj5u.com熱心網友回復:
檔案映射沒有 2GB 的限制。您可以使用 3GB 選項啟動 32 位 Windows,或者當 32 位行程在 64 位系統上運行時,如果設定了正確的PE 標志,您將獲得完整的 4GB 。所有這些限制都是理論上的,在實踐中你永遠無法達到。
您可以映射多大的視圖取決于兩件事;
- 行程地址空間中連續的空閑地址范圍。
- 用于跟蹤記憶體頁面的可用內核記憶體。
第一個是 32 位系統的最大限制,因為您的行程的地址空間與系統庫、第 3 方庫(防病毒、注入的“調整”工具等)、PEB 和 TEB、系統共享硬體保留的區域、執行緒堆疊和記憶體。這通常會使您低于 2GB。任何需要超過 500MB 的設計都應該根據需要更改為僅在特定的較小范圍內進行映射。
對于 64 位 Windows 上的 64 位行程,虛擬地址空間是 128 TB 范圍 0x000'00000000 到 0x7FFF'FFFFFFFF(KB889654聲稱 8 TB,但僅適用于< Windows 8.1)。任何可用范圍都會變小,但您至少可以假設幾個 TB。40GB 沒問題,也不足以解決系統資源不足的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/446139.html
