อาการ

พิจารณาสถานการณ์สมมติต่อไปนี้

  • คุณสร้างโปรแกรมประยุกต์ที่โหลดไบต์ จากโครงสร้าง หรือ จากคลาใน Microsoft Visual Studio 2008 Service Pack 1 (SP1)

  • คุณเปิดตัวเลือกการปรับให้เหมาะสม/Oxหรือตัวเลือกการปรับให้เหมาะสม/O2

  • คุณคอมไพล์แอพลิเคชัน โดยใช้การตั้งค่าคอนฟิกที่นำออกใช้สำหรับ x64 แพลตฟอร์ม

ในสถานการณ์สมมตินี้ ออฟเซ็ตที่จะถูกสร้างขึ้นในการเข้าถึงสมาชิกโครงสร้างหรือเป็นสมาชิกของคลาส ไม่ถูกต้องปัญหานี้เกิดขึ้นเฉพาะ เมื่อขนาดโครงสร้าง และออฟเซ็ต หรือขนาดคลาส และออฟเซ็ตเท่ากับหนึ่งในคู่ต่อไปนี้:

  • (14,13)

  • (15,13)

  • (22,21)

  • (23,21)

  • (30,29)

  • (31,29)

การแก้ปัญหา

ข้อมูลโปรแกรมแก้ไขด่วน

โปรแกรมแก้ไขด่วนจะพร้อมใช้งานได้ในขณะนี้จาก Microsoft อย่างไรก็ตาม มุ่งหวังเพื่อแก้ไขปัญหาที่อธิบายไว้ในบทความนี้เท่านั้น นำวิธีนี้ไปใช้กับระบบที่ประสบกับปัญหาที่เฉพาะเจาะจงเท่านั้น โปรแกรมแก้ไขด่วนนี้อาจได้รับการทดสอบเพิ่มเติม ดังนั้น ถ้าคุณจะไม่รุนแรงได้รับผลกระทบจากปัญหานี้ เราขอแนะนำให้ คุณรอถัดไป Visual Studio 2008 service pack ที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้เมื่อต้องการแก้ไขปัญหานี้ทันที ติดต่อฝ่ายบริการสนับสนุนลูกค้าของ Microsoft เพื่อขอรับโปรแกรมแก้ไขด่วน สำหรับรายการทั้งหมดของหมายเลขโทรศัพท์บริการการสนับสนุนลูกค้าของ Microsoft และข้อมูลเกี่ยวกับค่าใช้จ่ายในการสนับสนุน โปรดเยี่ยมชมเว็บไซต์ต่อไปนี้ของ Microsoft:

http://support.microsoft.com/contactus/?ws=supportหมายเหตุ ในกรณีพิเศษ ค่าบริการที่เรียกเก็บตามปกติเมื่อโทรติดต่อฝ่ายสนับสนุนอาจจะยกเลิกได้หาก Microsoft Support Professional ตัดสินว่าโปรแกรมปรับปรุงที่เฉพาะเจาะจงจะแก้ไขปัญหาของคุณได้ ค่าใช้จ่ายในการสนับสนุนตามปกติจะใช้กับคำถามและปัญหาในการสนับสนุนเพิ่มเติมซึ่งไม่สอดคล้องตามเกณฑ์สำหรับโปรแกรมปรับปรุงเฉพาะที่เกี่ยวข้อง

ข้อกำหนดเบื้องต้น

คุณต้องมี Visual Studio 2008 Service Pack 1 ติดตั้งอยู่เพื่อใช้โปรแกรมแก้ไขด่วนนี้

ข้อกำหนดการรีสตาร์ท

คุณไม่ต้องรีสตาร์ทคอมพิวเตอร์หลังจากใช้โปรแกรมแก้ไขด่วนนี้

ข้อมูลการแทนที่โปรแกรมแก้ไขด่วน

โปรแกรมแก้ไขด่วนนี้ไม่ได้แทนโปรแกรมแก้ไขด่วนอื่น ๆ

ข้อมูลแฟ้ม

เวอร์ชันภาษาอังกฤษของโปรแกรมแก้ไขด่วนนี้มีแอตทริบิวต์ของแฟ้ม (หรือแอตทริบิวต์ของแฟ้มที่ใหม่กว่านี้) ซึ่งแสดงรายการไว้ในตารางต่อไปนี้ วันที่และเวลาสำหรับแฟ้มเหล่านี้จะแสดงรายการไว้ในรูปแบบเวลามาตรฐานสากล (UTC) เมื่อคุณดูข้อมูลแฟ้ม ระบบจะแปลงข้อมูลนี้เป็นเวลาท้องถิ่น เมื่อต้องการค้นหาความแตกต่างระหว่างเวลา UTC กับเวลาท้องถิ่น ใช้แท็บ โซนเวลา ในรายการ วันที่และเวลา ในแผงควบคุม

ชื่อแฟ้ม

รุ่นของแฟ้ม

ขนาดของแฟ้ม

วันที่

เวลา

แพลตฟอร์ม

C2.dll

15.0.30729 4082

2,283,320

19 2009 มีนาคม

05:13

x86

C2.dll

15.0.30729.4082

2,36 1,656

19 2009 มีนาคม

05:13

x86

C2.dll

15.0.30729.4082

3,01 7,528

19 2009 มีนาคม

05:13

x64

Link.exe

9.0.30729.4082

1,0 54,520

19 2009 มีนาคม

05:13

x64

Link.exe

9.0.30729.4082

799, 032

19-Mar-2009

05:13

x86

วิธีแก้ปัญหา

เมื่อต้องการหลีกเลี่ยงปัญหานี้ เพิ่มอย่าง น้อยหนึ่งสมาชิกดัม "อักขระไม่มีลายเซ็น" เมื่อต้องการขยายขนาด ของโครงสร้าง หรือ ของคลาสที่เป็นผลคูณน้อยที่สุด 8 ไบต์ ตัวอย่างเช่น ขยาย 14 ไบต์ 16 ไบต์

สถานะ

Microsoft ยืนยันว่านี่เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ซึ่งแสดงไว้ในส่วน "นำไปใช้กับ"

ข้อมูลเพิ่มเติม

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับศัพท์เฉพาะในการปรับปรุงซอฟต์แวร์ ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

824684คำอธิบายของคำศัพท์มาตรฐานที่ใช้เพื่ออธิบายปรับปรุงซอฟต์แวร์ของ Microsoft

ขั้นตอนในการทบทวนเกิดปัญหา

  1. สร้างโปรแกรมประยุกต์ที่มีชื่อว่า Test.cpp โดยใช้รหัสต่อไปนี้ใน 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. คอมไพล์แอพลิเคชัน โดยใช้คำสั่งต่อไปนี้:

    ล้ test.cpp /O2 /MD

ผลลัพธ์คาดไว้คือ 4 อย่างไรก็ตาม ผลที่เกิดขึ้นจริงเป็น 0

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย