Sümptomid
Kujutage ette järgmist stsenaariumi.
-
Saate luua rakendus, mis laadib bait struktuur või klassi Microsoft Visual Studio 2008 Service Pack 1 (SP1).
-
Sisselülitamist /Ox optimeerimise kaudu või O2 optimeerimine.
-
Rakenduse Kompileerimine x64 Väljalaske konfiguratsiooni abil platvormi.
Selle stsenaariumi puhul luuakse juurde pääseda see struktuur või klassi liikme nihe on vale.
See probleem ilmneb ainult kui struktuur ja nihe või klassi suurus ja nihe väiksem üks järgmised:
-
(14,13)
-
(15,13)
-
(22,21)
-
(23,21)
-
(30,29)
-
(31,29)
Lahendus
Kiirparanduse teave
Lasknud välja toetatava käigultparanduse on nüüd Microsoftilt saadaval. See on mõeldud üksnes käesolevas artiklis kirjeldatud probleemi lahendamiseks. Rakendage seda ainult süsteemides, kus ilmneb see konkreetne probleem. Seda käigultparandust võidakse täiendavalt testida. Seega, kui probleem teie tööd tõsiselt ei kahjusta, soovitame oodata järgmist Visual Studio 2008 hoolduspaketti, mis sisaldab seda kiirparandust.
Probleemi kohe lahendada, pöörduge vastava kiirparanduse hankimiseks Microsofti klienditoe. Täieliku loendi Microsofti klienditugiteenuste pakkujate telefoninumbrite ja tugiteenuste hinnateabe hankimiseks külastage järgmist Microsofti veebisaiti:
http://support.microsoft.com/contactus/?ws=supportMärkus. Erijuhtudel võib kulud, mis tekivad teatud tugiteenuse telefonikõnede maksumus tühistada, kui Microsofti tugiteenusepakkuja leiab, et mõni konkreetne värskendus lahendab teie probleemi. Tavaline tugiteenuste kohaldatakse täiendavat tugiteenust vajavatele küsimustele ning probleemidele, mis pole lahendatavad konkreetse värskenduse installimisega.
Eeltingimused
Visual Studio 2008 Service Pack 1 selle kiirparanduse rakendamiseks peab olema.
Taaskäivitamise nõue
Te ei pea pärast selle kiirparanduse rakendamist arvutit taaskäivitama.
Kiirparanduse asendamise teave
See kiirparandus ei asenda ühtegi muud käigultparandust.
Failiteave
Sellel kiirparanduse ingliskeelsel versioonil on failiatribuudid (või hilisemad failiatribuudid), mis on loetletud järgmises tabelis. Kuupäevad ja kellaajad need failid jaoks on loetletud maailmaaja järgi (UTC). Faili teabe vaatamisel teisendatakse see kohalikule ajale. UTC ja kohaliku aja erinevuste väljaselgitamiseks kasutage juhtpaneeli üksuses kuupäev ja kellaaeg vahekaarti ajavöönd .
Faili nimi |
Faili versioon |
Faili maht |
Kuupäev |
Aeg |
Platvorm |
---|---|---|---|---|---|
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 |
Lahendus
Selle probleemi lahendamiseks lisada ühe või mitme fiktiivne "unsigned char" liikmeid laiendada suurus struktuuri või klassi väikseim mitu kaheksa baiti. Näiteks laiendada 14 baiti 16 baiti.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "Kehtib järgmiste toodete kohta" loetletud Microsofti toodetel.
Lisateabe saamiseks
Tarkvaravärskenduste terminoloogia kohta lisateabe saamiseks avage Microsofti teabebaasi (Knowledge Base) artikkel, klõpsates järgmist artiklinumbrit:
824684 Microsofti tarkvaravärskenduste iseloomustamiseks kasutatavate standardterminite kirjeldus
Probleemi taasesilekutsumise juhised
-
Looge rakenduse nimega Test.cpp abil järgmine kood 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;
} -
Rakenduse Kompileerimine, kasutades järgmist käsku:
CL test.cpp O2 /MD
Oodatav tulemus on 4. Kuid tegelik tulemus on 0.