Seberapa berbahaya mengakses array di luar batasnya (dalam C)? Kadang-kadang dapat terjadi bahwa saya membaca dari luar array (saya sekarang mengerti saya kemudian mengakses memori yang digunakan oleh beberapa bagian lain dari program saya atau bahkan lebih dari itu) atau saya mencoba untuk menetapkan nilai ke indeks di luar array. Program terkadang macet, tetapi terkadang hanya berjalan, hanya memberikan hasil yang tidak terduga.
Sekarang yang ingin saya ketahui adalah, seberapa berbahayakah ini sebenarnya? Jika itu merusak program saya, itu tidak terlalu buruk. Jika di sisi lain itu merusak sesuatu di luar program saya, karena saya entah bagaimana berhasil mengakses beberapa memori yang sama sekali tidak terkait, maka itu sangat buruk, saya kira. Saya membaca banyak 'apa pun bisa terjadi', 'segmentasi mungkin menjadi masalah paling tidak buruk' , 'hard disk Anda mungkin menjadi merah muda dan unicorn mungkin bernyanyi di bawah jendela Anda', yang semuanya bagus, tapi apa sebenarnya bahayanya?
Pertanyaan saya:
- Bisakah membaca nilai dari jauh di luar array merusak apa pun selain program saya? Saya akan membayangkan hanya melihat hal-hal tidak mengubah apa pun, atau apakah itu misalnya mengubah atribut 'terakhir kali dibuka' dari file yang kebetulan saya jangkau?
- Dapatkah menetapkan nilai-nilai di luar array merusak sesuatu selain dari program saya? Dari pertanyaan Stack Overflow ini saya menyimpulkan bahwa dimungkinkan untuk mengakses lokasi memori mana pun, bahwa tidak ada jaminan keamanan.
- Saya sekarang menjalankan program kecil saya dari dalam XCode. Apakah itu memberikan perlindungan ekstra di sekitar program saya di mana ia tidak dapat menjangkau di luar ingatannya sendiri? Bisakah itu membahayakan XCode?
- Adakah rekomendasi tentang cara menjalankan kode bawaan kereta saya dengan aman?
Saya menggunakan OSX 10.7, Xcode 4.6.