Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เหตุใดการเข้าถึงอาร์เรย์นอกขอบเขตจึงไม่ทำให้เกิดข้อผิดพลาดใน C ++


นี่เป็นเพราะความจริงที่ว่า C++ ไม่ได้ทำการตรวจสอบขอบเขต ภาษาเช่น Java และ python มีการตรวจสอบขอบเขต ดังนั้นหากคุณพยายามเข้าถึงองค์ประกอบที่อยู่นอกขอบเขต จะเกิดข้อผิดพลาด หลักการออกแบบ C++ คือไม่ควรช้ากว่าโค้ด C ที่เทียบเท่ากัน และ C จะไม่ทำการตรวจสอบขอบเขตอาร์เรย์

ดังนั้น หากคุณพยายามเข้าถึงหน่วยความจำนอกขอบเขต การทำงานของโปรแกรมของคุณจะไม่ได้กำหนดไว้ เนื่องจากสิ่งนี้เขียนด้วยมาตรฐาน C++ โดยทั่วไป เมื่อใดก็ตามที่คุณพบพฤติกรรมที่ไม่ได้กำหนดไว้ อะไรก็เกิดขึ้นได้ แอปพลิเคชันอาจขัดข้อง อาจหยุดทำงาน อาจทำงานได้ดี (หรืออย่างน้อยก็ดูเหมือนว่าจะทำงานได้ดี) อาจรบกวนแอปพลิเคชันอื่นๆ (ไม่ใช่ในระบบปฏิบัติการสมัยใหม่จริงๆ) เป็นต้น