การเข้าถึงอาเรย์นั้นมีอันตรายเพียงใดนอกขอบเขต (ใน C)? บางครั้งมันอาจเกิดขึ้นที่ฉันอ่านจากนอกอาร์เรย์ (ตอนนี้ฉันเข้าใจแล้วฉันเข้าถึงหน่วยความจำที่ใช้โดยส่วนอื่น ๆ ของโปรแกรมของฉันหรือมากกว่านั้น) หรือฉันพยายามตั้งค่าเป็นดัชนีนอกอาร์เรย์ บางครั้งโปรแกรมขัดข้อง แต่บางครั้งก็ทำงานเพียงให้ผลลัพธ์ที่ไม่คาดคิด
ทีนี้สิ่งที่ฉันอยากรู้ก็คือมันอันตรายแค่ไหน? ถ้ามันทำให้โปรแกรมของฉันเสียหายก็ไม่เลว หากในอีกทางหนึ่งมันแตกบางอย่างนอกโปรแกรมของฉันเพราะฉันสามารถเข้าถึงหน่วยความจำที่ไม่เกี่ยวข้องทั้งหมดได้ฉันคิดว่า ฉันอ่าน 'สิ่งที่สามารถเกิดขึ้นได้' มากมาย'การแบ่งส่วนอาจเป็นปัญหาที่น้อยที่สุด' 'ฮาร์ดดิสก์ของคุณอาจเปลี่ยนเป็นสีชมพูและยูนิคอร์นอาจร้องเพลงใต้หน้าต่างของคุณ' ซึ่งเป็นสิ่งที่ดี แต่สิ่งที่เป็นอันตรายจริงๆ?
คำถามของฉัน:
- การอ่านค่าจากด้านนอกอาเรย์จะทำให้เกิดความเสียหายอะไรนอกเหนือจากโปรแกรมของฉันหรือไม่? ฉันคิดว่าการดูสิ่งต่าง ๆ จะไม่เปลี่ยนแปลงอะไรเลยหรืออย่างเช่นจะเปลี่ยนแอตทริบิวต์ 'เปิดครั้งล่าสุด' ของไฟล์ที่ฉันไปให้ถึง
- การตั้งค่าต่าง ๆ นอกอาร์เรย์สามารถทำให้เกิดความเสียหายอะไรนอกเหนือจากโปรแกรมของฉันได้หรือไม่? จาก คำถาม Stack Overflowฉันรวบรวมว่าเป็นไปได้ที่จะเข้าถึงตำแหน่งหน่วยความจำใด ๆ ที่ไม่มีการรับประกันความปลอดภัย
- ตอนนี้ฉันรันโปรแกรมเล็ก ๆ ของฉันจากภายใน XCode นั่นให้การป้องกันพิเศษรอบ ๆ โปรแกรมของฉันซึ่งมันไม่สามารถเข้าถึงภายนอกหน่วยความจำของตัวเองได้หรือไม่? มันจะเป็นอันตรายต่อ XCode หรือไม่?
- คำแนะนำใด ๆ เกี่ยวกับวิธีเรียกใช้โค้ด buggy ของฉันอย่างปลอดภัยหรือไม่
ฉันใช้ OSX 10.7, Xcode 4.6