Rouliann
Messages postés115Date d'inscriptionsamedi 20 décembre 2003StatutMembreDernière intervention23 août 2008
-
28 mai 2005 à 14:17
MetalDwarf
Messages postés241Date d'inscriptionmardi 29 octobre 2002StatutMembreDernière intervention23 janvier 2006
-
28 mai 2005 à 18:38
Salut tout le monde j'ai un gros problème et malgré tous mes essais je n'arrive pas à le résoudre...
Il n'y a pas d'erreurs à la compilation mais lorsque je lance mon prog
un message d'erreur s'affiche : "An unhandled win32 exception occured
in R-Pacman.exe [3288]".
Lorsque je lance le débuggeur de DevCpp (v4.9.9.2) il me dit "Une
violation d'accès (erreur de segmentation) est apparue dans votre
programme"...
Ma première question est : qu'est ce qu'une erreur de segmentation ?
Ensuite j'aimerais savoir comment résoudre ce problème ^^
est un tableau d'entiers; il est membre privé de la classe Pastille (la
ligne de code ci-dessus est dans le constructeur de la classe)
joueur est de type Joueur et getXpos() et getYpos() sont deux fonctions
membres (public) de la classe Joueur qui renvoient les valeurs de x et
y, qui sont des membres privés de la classe Perso.
Et Joueur est une classe dérivée de la classe Perso
Je sais pas si tout ce que je viens de dire vous sert à quelque chose pour m'aider mais on sait jamais ^^
A+
==========
**Rouliann** C++ For Fun!
A voir également:
Erreur de segmentation... Qu'est ce que c'est ??? :o
MetalDwarf
Messages postés241Date d'inscriptionmardi 29 octobre 2002StatutMembreDernière intervention23 janvier 2006 28 mai 2005 à 14:48
Une erreur de segmentation intervient lorsque le programme tente
d'accéder à des données qui ne lui appartiennent pas (accès à une
adresse qui n'est pas "mappée" par le processus).
Engros, ce que ca veut dire c'est que tu as du depasser les limites du tableau dans cette instruction.
ex: char tab[50];
tab[50] ='\0'; <-- Erreur car le dernier element du tableau est 49
Le probleme des erreurs de segmentation est qu'elle ne sont pas
toujours détectées tout de suite, car parfois les données "au-delà" des
bornes appartienent bien au programme (c'est la dessus que reposent les
failles par "buffer overflow").
MetalDwarf
Messages postés241Date d'inscriptionmardi 29 octobre 2002StatutMembreDernière intervention23 janvier 2006 28 mai 2005 à 18:38
Deathcrash > Pour les buffer overflow, c est a la fois ca... et pas
ca. La memoire n est pas segmentee comme tu le decris, pour les buffer
overflow, la cause est que l ecriture de donnees au dela des bornes
permet de modifier une adresse stockee en memoire (l adresse de
retour), et donc de la faire pointer vers une autre zone, qui est une
zone de donnees dans laquelle est ecrite du code qui sera alors execute
(la pile). Donc la cause du buffer overflow est non seulement le manque
de protection contre l execution de la pile sur x86 (corrige que
x86-64), mais surtout une ecriture au dela des bornes du tableau.