Sdílet prostřednictvím


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í.