Belirtiler

Aşağıdaki senaryoyu ele alın.

  • Bir yapı ya da Microsoft Visual Studio 2008 Service Pack 1 (SP1) bir sınıfta bir bayt yükleyen bir uygulama oluşturun.

  • Siz /Ox en iyileştirme seçeneğini veya /O2 en iyileştirme seçeneğini açın.

  • Yayın yapılandırma için x64 kullanarak uygulamayı derleyin platformu.

Bu senaryoda, yapısı üyesi veya sınıf üyesi erişmek için oluşturulan mahsup yanlıştır.Bu sorun, yalnızca zaman yapı boyutu ve uzaklık veya sınıf boyutu ve uzaklık aşağıdaki çiftleri biri eşit oluşur:

  • (14,13)

  • (15,13)

  • (22,21)

  • (23,21)

  • (30,29)

  • (31,29)

Çözüm

Düzeltme bilgileri

Artık Microsoft tarafından desteklenen bir düzeltme sağlanmaktadır. Ancak bunun yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Yalnızca bu özel sorunla karşılaşmış olan sistemlere uygulayın. Bu düzeltme ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilemiyorsa, bu düzeltmeyi içeren bir sonraki Visual Studio 2008 hizmet paketini beklemenizi öneririz.Bu sorunu hemen düzeltmek için düzeltmeyi edinmek üzere Microsoft Müşteri Destek Hizmetleri'ne başvurun. Microsoft Müşteri Destek Hizmetleri telefon numaralarının ve destek ücretleriyle ilgili bilgi tam listesi için aşağıdaki Microsoft Web sitesini ziyaret edin:

http://support.microsoft.com/contactus/?ws=supportNot: Özel durumlarda, Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu çözeceğini belirlerse, destek aramaları için normalde uygulanan ücretler iptal edilebilir. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.

Önkoşullar

Visual Studio 2008 Service Pack bu düzeltmeyi uygulamak için 1 olmalıdır.

Yeniden başlatma gereksinimi

Bu düzeltmeyi uyguladıktan sonra bilgisayarı yeniden başlatmanız gerekmez.

Düzeltme değiştirme bilgileri

Bu düzeltme eki, başka düzeltmelerin yerini almaz.

Dosya bilgileri

Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yeni dosya özniteliklerine) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'te (UTC) listelenmiştir. Dosya bilgilerini görüntülediğinizde koordinatlı evrensel saat yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için Denetim Masası'ndaki Tarih ve Saat öğesinde Saat Dilimi sekmesini kullanın.

Dosya adı

Dosya sürümü

Dosya boyutu

Tarih

Saat

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

Geçici çözüm

Bu soruna geçici bir çözüm için yapı veya sınıfın en küçük katına sekiz bayt boyutunu genişletmek için bir veya daha fazla kukla "İmzasız char" üyeler ekleyin. Örneğin, 14 16 bayt bayt genişletir.

Durum

Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.

Daha fazla bilgi

Yazılım güncelleştirme terminolojisi hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

824684 Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması

Sorunu yeniden oluşturma adımları

  1. Visual Studio 2008 SP1'de aşağıdaki kodu kullanarak Test.cpp adlı bir uygulama oluşturun:

    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. Aşağıdaki komutu kullanarak uygulamayı derleyin:

    cl test.cpp /O2 /MD

Beklenen sonuç 4 olacaktır. Ancak, gerçek sonuç 0'dır.

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.