Quel est le danger d'accéder à un tableau en dehors de ses limites (en C)? Il peut parfois arriver que j'ai lu de l'extérieur de la matrice (maintenant, je comprends que je ne puis accéder à la mémoire utilisée par certaines autres parties de mon programme ou même au-delà) ou je suis en train de mettre une valeur à un indice en dehors de la matrice. Le programme plante parfois, mais parfois seulement fonctionne, seulement de donner des résultats inattendus.
Maintenant ce que j'aimerais savoir, quel est le danger d'-ce vraiment? Si elle endommage mon programme, il n'est pas si mauvais. Si d'autre part il se casse quelque chose en dehors de mon programme, car j'ai réussi à accéder à certains totalement sans rapport avec la mémoire, alors il est très mauvais, j'imagine. J'ai lu beaucoup de 'tout peut arriver', 'la segmentation peut-être le moins mauvais problème', 'votre disque dur peut virer au rose et les licornes peut-être chanter sous votre fenêtre", qui est tout beau, mais ce qui est vraiment le danger?
Mes questions:
- Peut lire les valeurs de façon à l'extérieur de la matrice endommager quoi que ce soit en dehors de mon programme? J'imagine juste de regarder les choses ne ne rien changer, ou serait-il par exemple de modifier le " dernier moment ouvert attribut d'un fichier il m'est arrivé d'atteindre?
- Pouvez les valeurs de réglage chemin à l'extérieur de la matrice des dommages de quelque chose en dehors de mon programme? À partir de ce stackoverflow question , je suppose que c'est possible d'accéder à toute l'emplacement de la mémoire, qu'il n'existe aucune garantie de sécurité.
- J'ai mon petit programmes à partir de XCode. Ne que fournir une certaine protection supplémentaire autour de mon programme où il ne peut pas atteindre l'extérieur de sa propre mémoire? Peut-il nuire à XCode?
- Des recommandations sur la façon de gérer mon intrinsèquement code bogué en toute sécurité?
J'utilise OSX 10.7, Xcode 4.6
C'est ma première Stackoverflow question. J'ai pris le temps de lire autant que je le pouvais sur le sujet, mais j'ai probablement raté beaucoup de ressources. Laissez-moi savoir si vous vous sentez que je n'ai pas assez de recherche et/ou voyez-vous d'autres problèmes avec cette question.