Virtuellt adressutrymme (programmeringsguide för 64-bitars Windows)
Som standard har 64-bitars Microsoft Windows-baserade program ett adressutrymme i användarläge på flera terabyte. Exakta värden finns i Minnesgränser för Windows- och Windows Server-versioner. Program kan dock ange att systemet ska allokera allt minne för programmet under 2 gigabyte. Den här funktionen är fördelaktig för 64-bitarsprogram om följande villkor är uppfyllda:
- Det räcker med ett adressutrymme på 2 GB.
- Koden har många varningar om pekaretrunkering.
- Pekare och heltal blandas fritt.
- Koden har polymorfism med hjälp av 32-bitars datatyper.
Alla pekare är fortfarande 64-bitars pekare, men systemet ser till att varje minnesallokering sker under gränsen på 2 GB, så att inga betydande data går förlorade om programmet trunkerar en pekare. Pekare kan trunkeras till 32-bitarsvärden och sedan utökas till 64-bitarsvärden genom att antingen signera tillägg eller nolltillägg.
Om du vill ange den här minnesbegränsningen använder du alternativet /LARGEADDRESSAWARE:NO linker. Observera att /LARGEADDRESSAWARE:NO ignoreras för en ARM64-binär fil. Tänk dock på att problem kan uppstå när du använder det här alternativet. Om du skapar en DLL som använder det här alternativet och DLL-filen anropas av ett program som inte använder det här alternativet kan DLL:en trunkera en 64-bitars pekare vars övre 32 bitar är betydande. Detta kan orsaka programfel utan varning.