petit pb de seg. fault [C++] - C++ - Programmation
Marsh Posté le 26-07-2005 à 17:31:18
# #include <cstdlib>
# #include <cstdio>
# #include <string>
# #include <fstream>
ça sert à quoi tout ça ?
Marsh Posté le 26-07-2005 à 18:03:29
tu ne voudrais pas nous montrer ton code de fm_volume.h/cpp ?
Marsh Posté le 26-07-2005 à 18:07:08
mouerf vous allez crier... mais si la seg fault est apres le yop, ca peut venir d'avant?
je vai le chercher...
le .h
Code :
|
le .cpp est plutot lourd...
Marsh Posté le 26-07-2005 à 18:10:51
il y a une (au moins) seg fault dans le cpp mais je l'ai mise en commentaire et celle qui me bloque s'est alors dévoilée
si on peut voir ce qui se passe sans le cpp ca serait cool, il y a environ 400 lignes je me vois mal les poster.
Marsh Posté le 26-07-2005 à 18:32:18
c'est quand tu veux pour donner du code ...
sinon RTFM, tu lances ton debugger et tu te débrouilles.
Marsh Posté le 26-07-2005 à 18:42:46
Voici le cpp (arrangé et tronqué)
Code :
|
et le debugger me dit :
Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
...
Marsh Posté le 26-07-2005 à 18:45:54
en gros, je cherche à lire une image: dans le fichier .hdr on trouve les infos permettant de lire le .img qui contient les données brutes.
Marsh Posté le 27-07-2005 à 10:09:18
nifnef a écrit : Bonjour,
|
manquerait pas un
Code :
|
des fois?
Marsh Posté le 27-07-2005 à 12:54:40
soit je met mon delete et ca plante dans le destructeur :
Program received signal SIGSEGV, Segmentation fault.
gsl_matrix_free (m=0x0) at init_source.c:185
185 if (m->owner)
soit je ne le met pas :
Program received signal SIGSEGV, Segmentation fault.
0x40316f45 in _IO_cleanup () from /lib/libc.so.6
et je ne suis capable de résoudre aucun de ces pb
Marsh Posté le 27-07-2005 à 15:45:52
Effectivement, j'essayais de detruire fm_mat qui n'etait pas alloué.
Mais ca a l'air de pas être le seul pb!
Bon, je crois que c'est pas clair pour moi les destructeurs ... j'ai lu a droite a gauche que je dois detruire les pointeurs?
Donc dans mon cas, je détruis mon tableau de matrices (qui a été alloué et initialisé) et c'est tout?
(ai-je raison de vouloir faire un free de ma matrice temporaire temp?)
si je fais delete[] fm_data apres, j'ai ca :
Program received signal SIGSEGV, Segmentation fault.
0x4031aaa4 in _int_free () from /lib/libc.so.6
ca m'enerve, j'ai l'impression que qq chose m'echappe
Marsh Posté le 27-07-2005 à 16:35:50
je comprend pas trop les problèmes des gens avec l'allocation dynamique, y en a plein qui galère avec ca et pourtant c'est logique, tu alloue tu libère ca doit être automatique normalement (en tout cas pour moi) y a rien de plus à savoir.
Marsh Posté le 27-07-2005 à 16:58:22
je comprendrai si ca marchait (non, je blague c'est pas garanti)... mais dans mon cas, tu peux me dire comment je dois libérer proprement?
j'ai essayé delete [] fm_data, j'ai aussi désalloué une part une les matrices du tableau (avec gsl_matrix_free) et ca marche pas.
j'ai rajouté ca mais toujours pas d'amelioration ...
Code :
|
Program received signal SIGSEGV, Segmentation fault.
~basic_string (this=0xffffffff) at atomicity.h:40
40 __asm__ __volatile__ ("lock; xaddl %0,%2"
Current language: auto; currently c++
Marsh Posté le 26-07-2005 à 17:26:38
Bonjour,
je suis sur cette erreur depuis un certain temps et j'ai peur d'avoir perdu tout recul pour la résoudre.
la classe FmVolume étant définie dans fm_volume.h.
Mon probleme c'est à l'execution : superbe segmentation fault apres "yop" ...
Se peut-il qu'il s'agisse d'erreurs de la classe FmVolume qui seraient "descendues" ?
Merci pour vos suggestions...
Message édité par nifnef le 26-07-2005 à 18:17:00