Partager via


Espace d’adressage virtuel (Guide de programmation pour Windows 64 bits)

Par défaut, les applications Microsoft Windows 64 bits ont un espace d’adressage en mode utilisateur de plusieurs téraoctets. Pour des valeurs précises, consultez Limites de mémoire pour les versions Windows et Windows Server. Toutefois, les applications peuvent spécifier que le système doit allouer toute la mémoire pour l’application en dessous de 2 gigaoctets. Cette fonctionnalité est utile pour les applications 64 bits si les conditions suivantes sont remplies :

  • Un espace d’adressage de 2 Go est suffisant.
  • Le code comporte de nombreux avertissements de troncation de pointeur.
  • Les pointeurs et les entiers sont librement mélangés.
  • Le code a un polymorphisme utilisant des types de données 32 bits.

Tous les pointeurs sont toujours des pointeurs 64 bits, mais le système garantit que chaque allocation de mémoire se produit en dessous de la limite de 2 Go, de sorte que si l’application tronque un pointeur, aucune donnée significative n’est perdue. Les pointeurs peuvent être tronqués vers des valeurs 32 bits, puis étendus à des valeurs 64 bits par extension de signe ou par extension zéro.

Pour spécifier cette limitation de mémoire, utilisez l’option d’éditeur de liens /LARGEADDRESSAWARE:NO . Notez que /LARGEADDRESSAWARE:NO est ignoré pour un binaire ARM64. Toutefois, n’oubliez pas que des problèmes peuvent se produire lors de l’utilisation de cette option. Si vous générez une DLL qui utilise cette option et que la DLL est appelée par une application qui n’utilise pas cette option, la DLL peut tronquer un pointeur 64 bits dont les 32 bits supérieurs sont significatifs. Cela peut entraîner l’échec de l’application sans avertissement.