Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

วิธีตรวจจับ integer overflow ใน C/C++


วิธีปลอดภัยที่สุดคือตรวจสอบ overflow ก่อนที่จะเกิด มี hacky ways บางอย่างเช่น ถ้า aimed at detecting overflow ใน unsigned int addition สามารถตรวจสอบได้ว่า result น้อยกว่าค่าที่บวกกันหรือไม่ เช่น:

ตัวอย่างโค้ด

unsigned int x, y; unsigned int value = x + y; bool overflow = value < x; // Alternatively "value < y" should also work

เพราะถ้า x และ y เป็น unsigned ints ทั้งคู่ ถ้าบวกกันและ overflow ค่าของพวกมันไม่สามารถมากกว่าทั้งสองได้ เพราะต้องมากกว่า max possible unsigned int เพื่อ wrap around และข้ามค่าเหล่านี้

อีกวิธีคือพยายาม access Overflow flag ใน CPU บาง compilers ให้ access ได้ ซึ่งทดสอบได้แต่ไม่ใช่ standard