Logg på med Microsoft
Logg på, eller opprett en konto.
Hei,
Velg en annen konto.
Du har flere kontoer
Velg kontoen du vil logge på med.

Symptomer

Tenk deg følgende.

  • Du oppretter et program som laster inn en byteverdi fra en struktur eller en klasse i Microsoft Visual Studio 2008 Service Pack 1 (SP1).

  • Du aktiverer alternativet /Ox optimalisering eller den /O2 optimalisering.

  • Du kompilere programmet ved hjelp av en release-konfigurasjon for x64 plattform.

I dette scenariet er ikke riktig forskyvningen som genereres for å få tilgang til medlemmet struktur eller klasse-medlem.

Dette problemet oppstår bare når strukturen størrelsen og forskyvningen eller klasse størrelsen og forskyvningen er lik ett av de følgende par:

  • (14,13)

  • (15,13)

  • (22,21)

  • (23,21)

  • (30,29)

  • (31,29)

Løsning

Informasjon om hurtigreparasjon

En støttet hurtigreparasjon er nå tilgjengelig fra Microsoft. Det er imidlertid ment å løse problemet som er beskrevet i denne artikkelen. Bruk den bare på systemer som har dette bestemte problemet. Denne hurtigreparasjonen kan gjennomgå ytterligere testing. Hvis du ikke er alvorlig påvirket av dette problemet, anbefaler vi derfor at du venter på neste oppdateringspakke for Visual Studio 2008 som inneholder denne hurtigreparasjonen.

Hvis du vil løse dette problemet umiddelbart, kontakter du Microsoft Kundestøtte for å få hurtigreparasjonen. For en fullstendig liste over telefonnumre for Microsofts kundestøttetjenester og informasjon om støttekostnader, kan du gå til følgende Microsoft-webområde:

http://support.microsoft.com/contactus/?ws=supportObs! I spesielle tilfeller kan avgifter som vanligvis påløper for oppringinger til kundestøtte kanselleres hvis en Microsoft-tekniker avgjør at en bestemt oppdatering løser problemet. Vanlige kundestøttekostnader gjelder for ytterligere kundestøttespørsmål og problemer som ikke dekkes av den gjeldende oppdateringen.

Forutsetninger

Du må ha Visual Studio 2008 Service Pack 1 installert for å bruke denne hurtigreparasjonen.

Krav om omstart

Du trenger ikke å starte datamaskinen på nytt etter at du har installert denne hurtigreparasjonen.

Informasjon om erstatning av hurtigreparasjoner

Denne hurtigreparasjonen erstatter ikke andre hurtigreparasjoner.

Filinformasjon

Den engelskspråklige versjonen av denne hurtigreparasjonen har filattributtene (eller senere filattributter) som er oppført i følgende tabell. Datoene og klokkeslettene for disse filene er oppført i Coordinated Universal Time (UTC). Når du viser filinformasjonen, konverteres den til lokal tid. Hvis du vil finne forskjellen mellom UTC og lokal tid, kan du bruke kategorien tidssone under dato og klokkeslett i Kontrollpanel.

Filnavn

Filversjon

Filstørrelse

Dato

Tid

Plattform

C2.dll

15.0.30729. 4082

2,283,320

19-mars 2009

05:13

x86

C2.dll

15.0.30729.4082

2,36 1,656

19-mars 2009

05:13

x86

C2.dll

15.0.30729.4082

3,01 7,528

19-mars 2009

05:13

x64

Link.exe

9.0.30729.4082

1,0 54,520

19-mars 2009

05:13

x64

Link.exe

9.0.30729.4082

799, 032

19-Mar-2009

05:13

x86

Løsning

Hvis du vil omgå dette problemet, legger du til én eller flere midlertidige "usignerte char" medlemmer for å øke størrelsen på strukturen eller i klassen til minste multiplum av åtte byte. Hvis du for eksempel utvide 14 byte til 16 byte.

Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Hvis du vil ha mer informasjon

Hvis du vil ha mer informasjon om terminologi for programvareoppdatering, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:

824684 beskrivelse av standardterminologien som brukes til å beskrive oppdateringer av Microsoft-programvare

Fremgangsmåte for å gjenskape problemet

  1. Opprette et program som heter Test.cpp ved hjelp av følgende kode i 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. Kompiler programmet ved å bruke følgende kommando:

    CL-test.cpp/MD /O2

Det forventede resultatet er 4. Men er faktisk resultatet 0.

Trenger du mer hjelp?

Vil du ha flere alternativer?

Utforsk abonnementsfordeler, bla gjennom opplæringskurs, finn ut hvordan du sikrer enheten og mer.

Fellesskap hjelper deg med å stille og svare på spørsmål, gi tilbakemelding og høre fra eksperter med stor kunnskap.

Var denne informasjonen nyttig?

Hvor fornøyd er du med språkkvaliteten?
Hva påvirket opplevelsen din?
Når du trykker på Send inn, blir tilbakemeldingen brukt til å forbedre Microsoft-produkter og -tjenester. IT-administratoren kan samle inn disse dataene. Personvernerklæring.

Takk for tilbakemeldingen!

×