Simptome
Să luăm în considerare următorul scenariu:
-
Activați opțiunea de optimizare global (/Og) activând una dintre următoarele opțiuni:
-
/O1
-
/O2
-
/Ox
-
-
Construi un fişier sursă Microsoft Visual C++ utilizând Microsoft Visual Studio 2008 Service Pack 1 (SP1).
-
Fişierul sursă apelează funcția setjmp , funcția longjmp sau ambele funcţii.
În acest scenariu, compilator poate utiliza același deplasament de stivă pentru a stoca diferite variabile locale. De aceea, poate apărea un comportament neașteptat atunci când executați aplicația generat.
Cauză
Această problemă apare deoarece optimizer nu cont pentru funcția setjmp sau funcția longjmp . Acest lucru provoacă optimizer să calculeze incorect durata de viaţă a variabilelor locale. Când se modifică o variabilă, o altă variabilă poate fi modificat în mod neașteptat.
Rezolvare
Informații despre remedierea rapidă
O remediere rapidă compatibilă este disponibilă de la Microsoft. Cu toate acestea, scopul său este de a corecta numai problema descrisă în acest articol. Aplicați această remediere rapidă numai pentru sistemele care întâmpină problema descrisă în acest articol. 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 actualizare software care conţine această remediere rapidă. Pentru a rezolva imediat problema, contactaţi serviciile de asistență pentru clienți Microsoft pentru a obține remedierea rapidă. Pentru o listă completă cu numerele de telefon ale clienților servicii și asistență Microsoft sau pentru a crea o solicitare de asistenţă separată, vizitați următorul site Web Microsoft:
http://support.microsoft.com/contactus/?ws=supportNotă În cazuri speciale, costurile implicate de obicei pentru apelurile de asistență pot fi revocate dacă un specialist de la 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ă. Pentru a descărca această remediere rapidă de la Microsoft Developer Network (MSDN) Code Gallery, vizitați următorul site Web Microsoft:
http://code.msdn.microsoft.com/KB2498381Notă MSDN Code Gallery afișează limbile pentru care este disponibilă remedierea rapidă. Dacă nu vedeți limba dvs. listată, înseamnă că pagina de resurse Code Gallery nu este disponibil pentru limba respectivă. Sau, aveți posibilitatea să descărcați această remediere rapidă de la următorul site Web Microsoft Connect:
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=34826
Cerinţe preliminare
Pentru a aplica această remediere rapidă, trebuie să aveți Microsoft Visual Studio 2008 Service Pack 1 instalat.
Informații despre repornire
Nu trebuie să reporniți computerul după ce instalați această remediere rapidă, dacă ați oprit toate instanțele de Visual Studio.
Informații despre înlocuirea remedierilor rapide
Această remediere rapidă nu înlocuiește o remediere rapidă lansată anterior.
Informații despre fișier
Versiunea globală a acestei remedieri rapide instalează fişierele care au atributele care sunt listate în următoarele tabele. Datele şi orele pentru aceste fişiere sunt exprimate în Timpul universal (UTC). Datele și orele pentru aceste fișiere pe computerul local sunt afișate în ora locală, luându-se în calcul decalajul actual pentru ora de vară (DST). În plus, datele şi orele se pot modifica atunci când efectuaţi anumite operaţiuni asupra fişierelor.
Nume de fișier |
Versiune fișier |
Dimensiune fișier |
Data |
Ora |
Platformă |
---|---|---|---|---|---|
C2.dll |
15.0.30729.6147 |
2,283,840 |
25-Feb-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
2,362,688 |
25-Feb-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
2,493,248 |
25-Feb-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
3,018,048 |
25-Feb-2011 |
01:25 |
x64 |
C2.dll |
15.0.30729.6147 |
7,263,040 |
25-Feb-2011 |
01:25 |
IA-64 |
Link.exe |
9.0.30729.6147 |
1,055,560 |
25-Feb-2011 |
01:25 |
x64 |
Link.exe |
9.0.30729.6147 |
2,135,368 |
25-Feb-2011 |
01:25 |
IA-64 |
Link.exe |
9.0.30729.6147 |
800,584 |
25-Feb-2011 |
01:25 |
x86 |
Soluție de evitare
Pentru a rezolva această problemă, inițializează variabile locale în funcția, astfel încât compilator poate fi conștient de variabile de viaţă.
Stare
Microsoft a confirmat că aceasta este o problemă în 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