begin process at 2012 05 29 08:32:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Erreur de segmentation... Qu'est ce que c'est ??? :o


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur de segmentation... Qu'est ce que c'est ??? :o

samedi 28 mai 2005 à 14:17:16 | Erreur de segmentation... Qu'est ce que c'est ??? :o

Rouliann

Membre Club
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 ^^
D'après le débuggeur, l'erreur vient de là:

map[(int)(joueur.getXpos()/40)][(int)(joueur.getYpos()/40)]=0;

map 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!
samedi 28 mai 2005 à 14:48:47 | Re : Erreur de segmentation... Qu'est ce que c'est ??? :o

MetalDwarf

Réponse acceptée !
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").

samedi 28 mai 2005 à 14:54:34 | Re : Erreur de segmentation... Qu'est ce que c'est ??? :o

DeAtHCrAsH

MetalDwarf> Pour ce qui est des buffer overflow c'est pas vraiment ce que tu dis.

La mémoire est segmenté en deux grosses parties.
La premiere sert aux variables des programmes.
La deuxieme sert aux programmes eux meme.

Un buffer overflow arrive lorsque la zone mémoire alloué aux programmes est empiété par la zone mémoire reservée aux variables.

Ce qui fait ainsi crasher le PC, ou le programme selon le type d'architecture du microprocesseur.

Shell

samedi 28 mai 2005 à 16:09:07 | Re : Erreur de segmentation... Qu'est ce que c'est ??? :o

Rouliann

Membre Club
Ok je crois bien que c'est ça le problème puisque j'ai regardé ce que renvoie la fonction getXpos() et ca me donne ca : 7.88525e+268... cool non ? ^^
Bon a partir de là je pense que je vais pouvoir m'en sortir ;)
Merci!
A+

============
**Rouliann**
C++ For Fun!
samedi 28 mai 2005 à 18:38:11 | Re : Erreur de segmentation... Qu'est ce que c'est ??? :o

MetalDwarf

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.


Cette discussion est classée dans : problème, erreur, classe, joueur, segmentation


Répondre à ce message

Sujets en rapport avec ce message

Problème "général" avec Direct3D, HELP ! [ par ProGamer ] J'ai commencé une application Direct3D. Elle était constituée d'une classe principale qui contenait l'objet LPDIRECT3D8. Tout marchait bien. Ensuite, Inline asm + classe = erreur! [ par Darkneon ] Salut a tous.Lorsque je mets du codes assembleur dans ma classe le compilateur me renvoit l'erreur suivante."Inline assembly not allowed in inline and Problème avec l'erreur r6002 [ par Suisse00 ] Salut ! Info R6002 : http://msdn.microsoft.com/library/FRE/vccore/html/R6002.aspVoila sais que le serveur m'envoie une chaine comprenant des virgule, Segmentation Fault avec Mysql API [ par BenjZ ] Salut à tous,J'ai un GROS et URGENT problème euh... existentielJe n'arrive pas à faire une simple appli pour me connecter à MYSQL depuis C++, sans qu' Problème de compilation [ par lbs ] Bonsoir,J'ai téléchargé les sources d'eMule (version officielle et version lsd). Je compile le tout et ca me met le message d'erreur suivant :------ D problème de redéfinition a la compilation [ par bouba ] Arg, j'ai un blem de redéfinition a la compilation de mon application.Voici le message d'erreur que me donne gcc 3.1.main.o(.data+0x0): définitions mu o secour! pouvez-vous m'aider pour cette erreur? [ par vodkapomme43 ] Salut tout le monde,Voila mon problème: je veux effectuer un plaquage de texture en format jpeg (j'utilise visual c++ avec la bibliotèque open GL) et pointeur de classe [ par gbcha ] bonjour,J'ai un problème avec microsoft visual C++. J'avais crée un certain nombre de classe, avec un certain nombre de pointeurs sur ces classes. J'a problème opérateur= [ par papytergnier ] Tout d'abord je me présente vite fait : g un projet de c++ à rendre pr lundi et étant assez newbie je suis légérement dans la merde donc j'espère que problème de copier-coller pour les .h des dll ? [ par ilimo ] bonjour,j'ai trois projets : P1 : dll : contient la classe aP2 : dll : contient la classe bP3 : exe : contient la classe c qui se sert d


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 20,514 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales