Entrar com a conta da Microsoft
Entrar ou criar uma conta.
Olá,
Selecionar uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

Sintomas

Considere o seguinte cenário:

  • Criar um aplicativo que carrega um byte de uma estrutura de ou de uma classe no Microsoft Visual Studio 2008 Service Pack 1 (SP1).

  • Ative a opção de otimização /Ox ou /O2 otimização.

  • Compilar o aplicativo usando uma configuração de lançamento para o x64 plataforma.

Nesse cenário, o deslocamento é gerado para acessar o membro da classe ou o membro da estrutura está incorreto.

Esse problema ocorre somente quando o tamanho da estrutura e o deslocamento ou o tamanho da turma e o offset igual a um dos seguintes pares:

  • (14,13)

  • (15,13)

  • (22,21)

  • (23,21)

  • (30,29)

  • (31,29)

Resolução

Informações sobre o hotfix

Um hotfix suportado está disponível agora na Microsoft. No entanto, destina-se a corrigir somente o problema descrito neste artigo. Aplique-o 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 o próximo service pack do Visual Studio 2008 que contém esse hotfix.

Para resolver esse problema imediatamente, contate o Atendimento Microsoft para obter o hotfix. Para obter uma lista completa dos números de telefone do Serviço de Atendimento ao Cliente Microsoft e informações sobre custos de suporte, visite o seguinte site da Microsoft:

http://support.microsoft.com/contactus/?ws=supportObservação: em alguns casos, as taxas cobradas para chamadas de suporte podem ser canceladas caso um profissional de Suporte da Microsoft determine que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados para questões de suporte adicionais e problemas que não se qualificam à atualização específica em questão.

Pré-requisitos:

Você deve ter o Visual Studio 2008 Service Pack 1 instalado para aplicar esse hotfix.

Requisitos de reinicialização:

Você não precisa reiniciar o computador após aplicar esse hotfix.

Informações de substituição do hotfix:

Esse hotfix não substitui outros hotfixes.

Informações sobre o 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 na Hora Universal Coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora 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

15.0.30729. 4082

2,283,320

19 de março de 2009

05:13

x86

C2.dll

15.0.30729.4082

1,656 2,36

19 de março de 2009

05:13

x86

C2.dll

15.0.30729.4082

7,528 3,01

19 de março de 2009

05:13

x64

Link.exe

9.0.30729.4082

54,520 1,0

19 de março de 2009

05:13

x64

Link.exe

9.0.30729.4082

799, 032

19-Mar-2009

05:13

x86

Solução alternativa

Para contornar esse problema, adicione um ou mais membros fictício "unsigned char" para estender o tamanho da estrutura ou da classe para o menor múltiplo de oito bytes. Por exemplo, estenda 14 bytes de 16 bytes.

Status

A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".

Mais informações

Para obter mais informações sobre a terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:

824684 descrição da terminologia padrão usada para descrever as atualizações de software

Etapas para simular o problema

  1. Crie um aplicativo chamado Test.cpp usando o seguinte código no Visual Studio 2008 SP1:

    typedef struct DskDecimal
    {
    unsigned char precision;
    unsigned char scaleFactor;
    unsigned short value[ 5];
    unsigned char maxPrecision;
    unsigned char maxScaleFactor;
    } DskDecimal;

    int main()
    {
    DskDecimal decimal;
    decimal.maxScaleFactor = 4;
    DskDecimal self = decimal;
    return self.maxScaleFactor;
    }
  2. Compile o aplicativo usando o seguinte comando:

    test.cpp CL /MD /O2

O resultado esperado é 4. No entanto, o resultado real é 0.

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×