BOOL AfxCheckMemory ( );
ส่งกลับค่า
ไม่ใช่ศูนย์ถ้าไม่มีข้อผิดพลาดหน่วยความจำ 0 อื่น?
หมายเหตุ
ฟังก์ชันนี้ตรวจสอบพูลหน่วยความจำที่ว่าง และพิมพ์ข้อความผิดพลาดที่จำเป็น ถ้าฟังก์ชันตรวจพบความเสียหายไม่มีหน่วยความจำ มันพิมพ์อะไร?
บล็อกหน่วยความจำทั้งหมดที่ปัจจุบันถูกปันส่วนบนกองจะถูกตรวจสอบ รวมทั้งจัดสรร โดยใหม่แต่ไม่ผู้จัดสรร โดยเรียกโดยตรงไปยังต้นแบบหน่วยความจำ allocators เช่นฟังก์ชันmallocหรือฟังก์ชัน Windows GlobalAlloc ถ้าพบบล็อกใด ๆ จะเสีย ข้อความจะพิมพ์ให้ผลผลิตดีบักเกอร์?
ถ้าคุณรวมบรรทัด
#กำหนดใหม่ DEBUG_NEW
ในโมดูลโปรแกรม แล้วต่อมาเรียกAfxCheckMemoryแสดงชื่อแฟ้มและเส้นหมายเลขที่ถูกจัดสรรหน่วยความจำ?
หมายเหตุnbsp ถ้าโมดูลของคุณประกอบด้วยการใช้งานหนึ่ง หรือมากกว่าของคลาสที่ serializable นั้นคุณต้องใส่ตัว #define
บรรทัดหลังจากการเรียกแมโคIMPLEMENT_SERIALล่าสุด(&N)?
ฟังก์ชันนี้ใช้งานได้เฉพาะในรุ่นตรวจแก้จุดบกพร่องของ MFC?
ตัวอย่าง
/ / ตัวอย่าง AfxCheckMemory
กรง * pcage =ใหม่กรง (21) nbsp / / กรงที่ได้รับมาจาก CObject
อายุ * หน้า =ยุคใหม่ (22); / / อายุจะไม่ได้รับมาจาก CObject
*(((char*) pcage) - 1) = 99 / / เสียหายข้างต้นยามไบต์
*(((char*) หน้า) - 1) = 99 / / เสียหายข้างต้นยามไบต์
AfxCheckMemory()(&N)
ผลลัพธ์ได้จากโปรแกรมมีดังนี้:
ข้อผิดพลาดในการตรวจสอบหน่วยความจำที่ $ 0067495F = $ 63 ควร$ FD
ความเสียหาย: ก่อนไม่ใช่วัตถุบล็อกที่ $ 00674960
ไม่ใช่วัตถุการปันส่วนที่แฟ้ม test02.cxx(48)
ไม่ใช่วัตถุอยู่ที่ $ 00674960 เป็นยาว 2 ไบต์
ข้อผิดพลาดในการตรวจสอบหน่วยความจำที่ $ 00674905 = $ 63 ควร$ FD
ความเสียหาย: ก่อนวัตถุบล็อกที่ $ 00674906
วัตถุที่มีการปันส่วนที่แฟ้ม test02.cxx(47)
วัตถุที่อยู่ที่ $ 00674906 เป็นยาว 6 ไบต์