Požymiai
Įsivaizduokite tokią situaciją.
-
Galite sukurti programą, kuri įkelia baitas struktūra "arba" Microsoft Visual Studio 2008 1 pakeitimų paketas (SP1) klasės.
-
Galite įjungti parinktį /Ox optimizavimo arba/O2 optimizavimo variantas.
-
Rinkti paraiškos naudojant leidimo konfigūracijos x64 platforma.
Tokiu atveju poslinkis, kuris sukuriamas pasiekti struktūros narys arba grupės narys yra neteisingas.
Ši problema kyla, tik kai struktūros dydis ir poslinkis arba klasės dydis ir poslinkis lygus vieną iš šios poros:
-
(14,13)
-
(15,13)
-
(22.21)
-
(23,21)
-
(30,29)
-
(31,29)
Sprendimas
Karštųjų pataisų informacija
Palaikomą naujausią pataisą dabar yra Microsoft. Tačiau ji skirta spręsti tik šiame straipsnyje aprašytai problemai spręsti. Taikyti ją tik sistemoms, kuriose kyla ši konkreti problema. Šios karštosios pataisos gali būti papildomai išbandoma. Todėl, jei jums nelabai trukdo Ši problema, rekomenduojame palaukti kito Visual Studio 2008 pakeitimų paketo, kuriame bus šios karštosios pataisos.
Nedelsdami išspręsti šią problemą, susisiekite su Microsoft klientų palaikymo tarnybą ir įsigykite šias karštąsias pataisas. "Microsoft" klientų palaikymo tarnybos telefonų sąrašo ir informacijos apie palaikymo kainas sąrašą, apsilankykite šioje "Microsoft" svetainėje:
http://support.microsoft.com/contactus/?ws=supportPastaba. Konkrečiais atvejais už palaikymo skambučius taikomi įprasti mokesčiai gali būti atšaukti, jei "Microsoft" techninės pagalbos specialistas nusprendžia, kad jūsų problemą galima išspręsti naudojant konkretų naujinimą. Į įprastos kainos už palaikymą taikomos papildomiems palaikymo klausimams ir problemoms, kurių negalima išspręsti naudojant minėtą naujinimą.
Būtinosios sąlygos
Turite Visual Studio 2008 1 pakeitimų paketą norint taikyti šias karštąsias pataisas.
Reikalavimas paleisti iš naujo
Pritaikius šias karštąsias pataisas kompiuterio nereikia paleisti iš naujo.
Karštųjų pataisų pakeitimo informacija
Šios karštosios pataisos nepakeičia jokių kitų karštųjų pataisų.
Failo informacija
Šių karštųjų pataisų anglų k. versijos failo atributai (failo atributai) yra išvardyti toliau pateiktoje lentelėje. Datos ir laiko informacija pateikta pagal universalųjį laiką (UTC). Kai peržiūrite failo informaciją, ši informacija konvertuojama į vietos laiką. Norėdami sužinoti UTC ir vietos laiko skirtumą, naudokite valdymo skydo elemento Data ir laikas skirtuką Laiko juosta.
Failo vardas |
Failo versija |
Failo dydis |
Data |
Laikas |
Platforma |
---|---|---|---|---|---|
C2.dll |
15.0.30729. 4082 |
2,283,320 |
2009-kov-19 |
05:13 |
x86 |
C2.dll |
15.0.30729.4082 |
2,36 1,656 |
2009-kov-19 |
05:13 |
x86 |
C2.dll |
15.0.30729.4082 |
3,01 7,528 |
2009-kov-19 |
05:13 |
x64 |
Link.exe |
9.0.30729.4082 |
1,0 54,520 |
2009-kov-19 |
05:13 |
x64 |
Link.exe |
9.0.30729.4082 |
799, 032 |
19-Mar-2009 |
05:13 |
x86 |
Sprendimas
Norėdami išspręsti šią problemą, įtraukti vieną arba kelis fikcijos "nepasirašytos simbolis" narių išplėsti dydį struktūros arba klasės iki mažiausio aštuoni baitai. Pvz., išplėsti 14 baitų iki 16 baitų.
Būsena
„Microsoft“ patvirtino, kad tai yra „Microsoft“ produktų, išvardytų skyriuje „Taikoma“, problema.
Daugiau informacijos
Norėdami gauti daugiau informacijos apie programinės įrangos naujinimo terminiją, spustelėkite toliau esančio straipsnio numerį ir peržiūrėkite „Microsoft“ žinių bazės straipsnį:
824684 standartinę terminologiją, vartojamą Microsoft programinės įrangos naujinimams apibūdinti, aprašas
Problemos atkūrimo veiksmai
-
Sukurti programą, pavadintą Test.cpp, naudodami šį kodą 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;
} -
Kompiliuoti programą naudodami šią komandą:
CL test.cpp/O2 arba MD
Rezultato yra 4. Tačiau tikrasis rezultatas yra 0.