Sanal Adres Alanı (64 bit Windows için Programlama Kılavuzu)
Varsayılan olarak, 64 bit Microsoft Windows tabanlı uygulamalarda birkaç terabaytlık kullanıcı modu adres alanı vardır. Hassas değerler için bkz. Windows ve Windows Server Yayınları için Bellek Sınırları. Ancak, uygulamalar sistemin uygulama için tüm belleği 2 gigabayttan daha az ayırması gerektiğini belirtebilir. Bu özellik, aşağıdaki koşullar doğruysa 64 bit uygulamalar için yararlıdır:
- 2 GB adres alanı yeterlidir.
- Kodda birçok işaretçi kesme uyarısı vardır.
- İşaretçiler ve tamsayılar serbestçe karıştırılır.
- Kod, 32 bit veri türlerini kullanan çok biçimliliğe sahiptir.
Tüm işaretçiler hala 64 bit işaretçilerdir, ancak sistem her bellek ayırma işleminin 2 GB sınırının altında olmasını sağlar, böylece uygulama işaretçiyi kesirse önemli bir veri kaybolmaz. İşaretçiler 32 bit değerlere kesilebilir, ardından işaret uzantısı veya sıfır uzantısıyla 64 bit değerlere uzatılabilir.
Bu bellek sınırlamasını belirtmek için /LARGEADDRESSAWARE:NO bağlayıcı seçeneğini kullanın. ARM64 ikili dosyası için /LARGEADDRESSAWARE:NO yoksayıldığını unutmayın. Ancak, bu seçenek kullanılırken sorunların ortaya çıkabileceğini unutmayın. Bu seçeneği kullanan bir DLL oluşturursanız ve DLL bu seçeneği kullanmayan bir uygulama tarafından çağrılırsa, DLL üst 32 bitleri önemli olan 64 bitlik bir işaretçiyi kesebilir. Bu, herhangi bir uyarı olmadan uygulama hatasına neden olabilir.