Sintomas
Considere o seguinte cenário:
-
Você tem um projeto do Visual C++ 2010. O código-fonte do projeto tem uma estrutura ou classe que excede 64 bytes.
-
Você constrói o projeto para uma plataforma baseada em x64, e você usar a opção de compilador /O2 .
-
Execute o aplicativo.
Nessa situação, uma violação de acesso ocorre e o aplicativo falha.
Causa
Esse problema ocorre porque o compilador com base 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, um problema de memória ocorre para os objetos que ultrapassam 64 bytes.
Resolução
Informações sobre o hotfix
Um hotfix compatível foi disponibilizado pela Microsoft. No entanto, esse hotfix destina-se a corrigir somente o problema descrito neste artigo. Aplique este hotfix somente aos sistemas que apresentarem esse problema específico. Esta correção poderá ser submetida a testes adicionais. Portanto, se esse problema não o prejudicar, recomendamos que você aguarde a próxima atualização de software que contenha esse hotfix. Para baixar esse hotfix do MSDN Code Gallery, visite o seguinte site da Microsoft:
http://code.msdn.microsoft.com/KB2280741Observação O MSDN Code Gallery exibe os idiomas para os quais o hotfix está disponível. Se você não vir seu idioma listado, é porque a página de recursos da Galeria de código não está disponível para esse idioma. Observação caso outros problemas estejam ocorrendo ou caso qualquer solução de problemas seja necessária, talvez você precise 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 sejam específicos deste hotfix. Para obter uma lista completa dos números de telefone do Atendimento Microsoft e suporte ou para criar uma solicitação de serviço separada, visite o seguinte site da Microsoft:
http://support.microsoft.com/contactus/?ws=supportVocê também pode baixar esse hotfix, visite 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.
Necessidade de reinicialização
Você não precisa reiniciar o computador após aplicar o hotfix.
Informações de substituição do hotfix
Esse hotfix não substitui nenhum outro.
Informações do arquivo
A versão em inglês deste hotfix possui os atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas em UTC (Tempo Universal Coordenado). Quando você visualizar as informações sobre os arquivos, elas são convertidas no horário local. Para localizar a diferença entre o UTC e a hora local, use a guia fuso horário no item Data e hora no painel de controle.
Nome do arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
C2.dll |
16.0.30319.345 |
2,510,144 |
01-Aug-2010 |
23:42 |
x86 |
C2.dll |
16.0.30319.345 |
2,588,480 |
01-Aug-2010 |
23:42 |
x86 |
C2.dll |
16.0.30319.345 |
2,630,976 |
01-Aug-2010 |
23:42 |
x86 |
C2.dll |
16.0.30319.345 |
2,977,088 |
01-Aug-2010 |
23:42 |
x64 |
C2.dll |
16.0.30319.345 |
7,351,616 |
01-Aug-2010 |
23:42 |
IA-64 |
Solução alternativa
Para contornar esse problema, não use a opção de compilador /O2 quando você constrói o projeto.
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".