Virtuální adresní prostor (Průvodce programováním pro 64bitovou verzi Windows)
Ve výchozím nastavení 64bitové aplikace založené na systému Microsoft Windows mají adresní prostor uživatelského režimu několika terabajtů. Přesné hodnoty naleznete v tématu Omezení paměti pro windows a Windows Server release. Aplikace však mohou určit, že systém by měl přidělit veškerou paměť pro aplikaci nižší než 2 gigabajty. Tato funkce je výhodná pro 64bitové aplikace, pokud jsou splněny následující podmínky:
- Dostatek adresního prostoru o velikosti 2 GB.
- Kód obsahuje mnoho upozornění na zkrácení ukazatele.
- Ukazatele a celá čísla jsou volně smíšené.
- Kód má polymorfismus pomocí 32bitových datových typů.
Všechny ukazatele jsou stále 64bitovými ukazateli, ale systém zajišťuje, aby každé přidělení paměti bylo pod limitem 2 GB, takže pokud aplikace zkrátí ukazatel, neztratí se žádná důležitá data. Ukazatele lze zkrátit na 32bitové hodnoty a pak je rozšířit na 64bitové hodnoty buď rozšířením znaménka, nebo nulovým rozšířením.
Chcete-li určit toto omezení paměti, použijte možnost /LARGEADDRESSAWARE:NO linker. Všimněte si, že /LARGEADDRESSAWARE:NO se ignoruje pro binární soubor ARM64. Mějte však na paměti, že při použití této možnosti mohou nastat problémy. Pokud sestavíte knihovnu DLL, která používá tuto možnost a knihovna DLL je volána aplikací, která tuto možnost nepoužívá, může knihovna DLL zkrátit 64bitový ukazatel, jehož horních 32 bitů jsou významné. To může způsobit selhání aplikace bez upozornění.