Application Verifierรวมกับเครื่องมือแก้ไขจุดบกพร่องสำหรับ Windowsเป็นการตั้งค่าที่น่าทึ่ง คุณจะได้รับทั้งสองเป็นส่วนหนึ่งของโปรแกรมควบคุม Kit Windows หรือเบา SDK (ค้นพบเกี่ยวกับ Application Verifier เมื่อทำการค้นคว้าคำถามก่อนหน้านี้เกี่ยวกับปัญหาการทุจริตของฮีป ) ฉันเคยใช้ BoundsChecker และ Insure ++ (ที่กล่าวถึงในคำตอบอื่น ๆ ) ในอดีตด้วยเช่นกันถึงแม้ว่าฉันจะประหลาดใจว่าการทำงานของ Application Verifier เป็นเท่าใด
รั้วไฟฟ้า (aka "efence"), dmalloc , valgrindและอื่น ๆ ล้วน แต่เป็นที่กล่าวขวัญ แต่สิ่งเหล่านี้ส่วนใหญ่ง่ายกว่าที่จะทำงานภายใต้ * nix มากกว่า Windows Valgrind ยืดหยุ่นได้อย่างน่าขัน: ฉันได้ดีบั๊กซอฟต์แวร์เซิร์ฟเวอร์ขนาดใหญ่ที่มีปัญหาฮีปจำนวนมากที่ใช้งาน
เมื่อทุกอย่างล้มเหลวคุณสามารถให้ผู้ให้บริการระดับโลกของคุณเองใหม่ / ลบและ malloc / calloc / realloc มากเกินไป - วิธีการทำจะแตกต่างกันเล็กน้อยขึ้นอยู่กับคอมไพเลอร์และแพลตฟอร์ม - และนี่จะเป็นการลงทุนเล็กน้อย - แต่มันอาจจ่ายในระยะยาว รายการคุณสมบัติที่พึงประสงค์ควรดูคุ้นเคยจาก dmalloc และ electricfence และหนังสือยอดเยี่ยมที่น่าประหลาดใจในการเขียนรหัสของแข็ง :
- ค่ายาม : อนุญาตให้มีพื้นที่เพิ่มขึ้นเล็กน้อยก่อนและหลังการจัดสรรแต่ละครั้งซึ่งเป็นไปตามข้อกำหนดการจัดตำแหน่งสูงสุด กรอกข้อมูลด้วยหมายเลขเวทย์มนตร์ (ช่วยจับบัฟเฟอร์โอเวอร์โฟลและอันเดอร์อันเดอร์และตัวชี้ "ไวด์" เป็นครั้งคราว)
- alloc fill : เติมการจัดสรรใหม่ด้วยค่า non-0 magic - Visual C ++ จะทำสิ่งนี้ให้คุณใน Debug builds (ช่วยจับการใช้ vars ที่ไม่กำหนดค่าเริ่มต้น)
- free fill : เติมหน่วยความจำที่ถูกปลดปล่อยด้วยค่า non-0 เวทย์, ออกแบบมาเพื่อกระตุ้น segfault ถ้ามันถูกอ้างอิงในกรณีส่วนใหญ่ (ช่วยจับพอยเตอร์ห้อย)
- ล่าช้าฟรี : อย่าส่งคืนหน่วยความจำที่ได้รับอิสระไปยังฮีปสักพักเก็บให้เต็ม แต่ไม่สามารถใช้งานได้ (ช่วยจับพอยน์เตอร์ที่ห้อยต่องแต่งมากขึ้น
- การติดตาม : ความสามารถในการบันทึกในบางครั้งการจัดสรรจะมีประโยชน์
โปรดทราบว่าในระบบโฮมบรูว์ท้องถิ่นของเรา (สำหรับเป้าหมายแบบฝัง) เราแยกการติดตามออกจากสิ่งอื่น ๆ ส่วนใหญ่เนื่องจากค่าใช้จ่ายในการดำเนินการสูงกว่ามาก
หากคุณสนใจที่จะให้เหตุผลมากขึ้นในการโอเวอร์โหลดฟังก์ชั่น / ตัวดำเนินการเหล่านี้ลองดูคำตอบของฉันที่ "เหตุผลใดที่ทำให้โอเวอร์โหลดตัวดำเนินการทั่วโลกใหม่และลบ" ; การโปรโมตตนเองอย่างไร้ยางอายนั้นจะแสดงเทคนิคอื่น ๆ ที่เป็นประโยชน์ในการติดตามข้อผิดพลาดของกองการคอร์รัปชั่นรวมถึงเครื่องมืออื่น ๆ ที่เกี่ยวข้อง
เพราะผมเก็บหาคำตอบของฉันเองที่นี่เมื่อค้นหา alloc / ฟรี / รั้วค่าใช้ MS นี่คือคำตอบที่ครอบคลุม Microsoft dbgheap ค่าเติม