Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Simptome

Să luăm în considerare următorul scenariu.

  • Creați o aplicație care se încarcă un octet dintr-o structură sau dintr-o clasă din Microsoft Visual Studio 2008 Service Pack 1 (SP1).

  • Activați opțiunea de optimizare /Ox sau optimizare /O2 .

  • Se compilează aplicația utilizând o configurație de lansare pentru x64 platformă.

În acest scenariu, deplasarea generat pentru a accesa structura membru sau membru class este incorectă.

Această problemă apare numai când dimensiunea structurii și deplasarea sau dimensiunea class și deplasarea egală cu una dintre următoarele perechi:

  • (14,13)

  • (15,13)

  • (22,21)

  • (23,21)

  • (30,29)

  • (31,29)

Rezolvare

Informații despre remedierea rapidă

Un hotfix acceptat este acum disponibil de la Microsoft. Cu toate acestea, aceasta este scopul de a corecta numai problema descrisă în acest articol. Aplicați-o numai pe sistemele care întâmpină această problemă anume. Această remediere rapidă poate să necesite testare suplimentară. De aceea, dacă nu sunteți grav afectat de această problemă, vă recomandăm să aşteptaţi următoarea Visual Studio 2008 service pack care conține această remediere rapidă.

Pentru a rezolva imediat problema, contactaţi serviciile de asistență clienți Microsoft pentru a obţine remedierea rapidă. Pentru o listă completă a numerelor de telefon ale serviciilor de asistență pentru clienți Microsoft și informații despre costurile de asistență, vizitați următorul site Web Microsoft:

http://support.microsoft.com/contactus/?ws=supportNotă În cazuri speciale, costurile implicate de obicei pentru apelurile de suport pot fi anulate dacă un specialist în asistență Microsoft stabilește că o anumită actualizare va rezolva problema. Se vor aplica costurile uzuale de asistenţă pentru întrebări suplimentare de asistenţă şi pentru probleme ce nu fac obiectul actualizării în cauză.

Cerințe preliminare

Trebuie să aveți Visual Studio 2008 Service Pack 1 instalat pentru a aplica această remediere rapidă.

Cerinţă de repornire

Nu trebuie să reporniți computerul după aplicarea acestei remedieri rapide.

Informații despre înlocuirea remedierilor rapide

Această remediere rapidă nu înlocuiește nicio altă remediere rapidă.

Informații despre fișier

Versiunea în limba engleză a acestei remedieri rapide are atributele de fişier (sau atribute de fişier mai recente) enumerate în următorul tabel. Datele şi orele acestor fişiere sunt exprimate în listă în ora universală (UTC). Când vizualizaţi informaţiile despre fișier, acesta este convertit la ora locală. Pentru a găsi diferenţa dintre UTC şi ora locală, utilizaţi fila Fusul orar în elementul de Data şi ora în Panoul de Control.

Nume de fișier

Versiune fișier

Dimensiune fișier

Data

Ora

Platformă

C2.dll

15.0.30729. 4082

2,283,320

19-Mar-2009

05:13

x86

C2.dll

15.0.30729.4082

2,36 1,656

19-Mar-2009

05:13

x86

C2.dll

15.0.30729.4082

3,01 7,528

19-Mar-2009

05:13

x64

Link.exe

9.0.30729.4082

1,0 54,520

19-Mar-2009

05:13

x64

Link.exe

9.0.30729.4082

799, 032

19-Mar-2009

05:13

x86

Soluție

Pentru a rezolva această problemă, adăugați membri dummy "char nesemnate" unul sau mai multe pentru a extinde dimensiunea structurii sau a clasei la cel mai mic multiplu de opt octeți. De exemplu, extindeți octeți 14 la 16 octeți.

Stare

Microsoft a confirmat că aceasta este o problemă cu produsele Microsoft enumerate în secţiunea „Se aplică la".

Mai multe informații

Pentru mai multe informaţii despre terminologia privind actualizarea software-ului, faceţi clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoştinţe Microsoft:

824684 Descrierea terminologiei standard care este utilizat pentru a descrie actualizările de software Microsoft

Pași pentru reconstituirea problemei

  1. Creați o aplicație care este denumit Test.cpp utilizând următorul cod în 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. Compila aplicația utilizând următoarea comandă:

    cl test.cpp /O2/md

Rezultatul așteptat este 4. Cu toate acestea, rezultate reale este 0.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×