Sintomas
Tenha em conta o seguinte cenário:
- Você tem um projeto Visual C++ 2010. O código-fonte do projeto tem uma estrutura ou classe que excede 64 bytes.
- Você cria o projeto para uma plataforma baseada em x64 e usa a opção de compilador /O2.
- Você executa o aplicativo.
Nesse cenário, ocorre uma violação de acesso e o aplicativo falha.
Causa
Esse problema ocorre porque o compilador baseado em x64 do Visual Studio 2010 otimiza o código ajustando o alinhamento de alocação de dados de 64 bytes para 16 bytes. Portanto, ocorre um problema de memória para os objetos que excedem 64 bytes.
Resolução
Informações sobre o hotfix
Um hotfix suportado está disponível da Microsoft. No entanto, esse hotfix destina-se a corrigir apenas o problema descrito neste artigo. Aplique esse hotfix somente para sistemas que estão enfrentando esse problema específico. Esse hotfix pode receber testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde a próxima atualização de software que contém esse hotfix.
Para transferir esta correcção a partir da Galeria de Código MSDN, visite o seguinte site da Microsoft:
http://code.msdn.microsoft.com/KB2280741
Observação A Galeria de Código do MSDN exibe os idiomas para os quais o hotfix está disponível. Se não vir o seu idioma listado, é porque a página de recursos da Galeria de Código não está disponível para esse idioma.
Observação Se ocorrerem problemas adicionais ou se for necessária alguma solução de problemas, talvez seja necessário criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não se qualificam para esse hotfix específico. Para obter uma lista completa dos números de telefone do Suporte e Atendimento ao Cliente da Microsoft ou para criar um pedido de serviço separado, visite o seguinte site da Microsoft:
http://support.microsoft.com/contactus/?ws=support Você também pode baixar esse hotfix visitando o seguinte site da Microsoft:
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=31433
Pré-requisitos
Para aplicar esse hotfix, você deve ter o Visual Studio 2010 instalado.
Requisito de reinício
Não é necessário reiniciar o computador depois de aplicar o hotfix.
Informações sobre substituição de correções
Esta correção não substitui quaisquer outras correções.
Informações de ficheiro
A versão inglesa desta correção tem os atributos de ficheiro listados na tabela que se segue (ou atributos de ficheiro posteriores). As datas e horas desses arquivos estão listadas em Tempo Universal Coordenado (UTC). Quando visualizar as informações dos ficheiros, estas serão convertidas na hora local. Para determinar a diferença entre a hora UTC e a hora local, utilize o botão
Fuso Horário
na caixa de diálogo
Data e Hora
item em Painel de Controlo.
| Nome de ficheiro | Versão do ficheiro | Tamanho do ficheiro | Data | Hora | Plataforma |
|---|---|---|---|---|---|
| C2.dll | 16.0.30319.345 | 2,510,144 | 01 De agosto de 2010 | 23:42 | x86 |
| C2.dll | 16.0.30319.345 | 2,588,480 | 01 De agosto de 2010 | 23:42 | x86 |
| C2.dll | 16.0.30319.345 | 2,630,976 | 01 De agosto de 2010 | 23:42 | x86 |
| C2.dll | 16.0.30319.345 | 2,977,088 | 01 De agosto de 2010 | 23:42 | x64 |
| C2.dll | 16.0.30319.345 | 7,351,616 | 01 De agosto de 2010 | 23:42 | IA-64 |
Solução
Para contornar esse problema, não use a opção de compilador /O2 ao criar o projeto.
Estado
A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".