Partilhar via


Espaço de Endereço Virtual (Guia de Programação para Windows de 64 bits)

Por padrão, os aplicativos baseados no Microsoft Windows de 64 bits têm um espaço de endereço de modo de usuário de vários terabytes. Para obter valores precisos, consulte Limites de memória para versões do Windows e do Windows Server. No entanto, os aplicativos podem especificar que o sistema deve alocar toda a memória para o aplicativo abaixo de 2 gigabytes. Esse recurso é benéfico para aplicativos de 64 bits se as seguintes condições forem verdadeiras:

  • Um espaço de endereço de 2 GB é suficiente.
  • O código tem muitos avisos de truncamento de ponteiro.
  • Ponteiros e inteiros são misturados livremente.
  • O código tem polimorfismo usando tipos de dados de 32 bits.

Todos os ponteiros ainda são ponteiros de 64 bits, mas o sistema garante que cada alocação de memória ocorra abaixo do limite de 2 GB, de modo que, se o aplicativo trunca um ponteiro, nenhum dado significativo é perdido. Os ponteiros podem ser truncados para valores de 32 bits e, em seguida, estendidos para valores de 64 bits por extensão de sinal ou extensão zero.

Para especificar essa limitação de memória, use a opção vinculador /LARGEADDRESSAWARE:NO. Observe que /LARGEADDRESSAWARE:NO é ignorado para um binário ARM64. No entanto, esteja ciente de que podem ocorrer problemas ao usar essa opção. Se você criar uma DLL que usa essa opção e a DLL for chamada por um aplicativo que não usa essa opção, a DLL poderá truncar um ponteiro de 64 bits cujos 32 bits superiores são significativos. Isso pode causar falha no aplicativo sem qualquer aviso.