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