Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[g++] impossible de faire un delete ??? (résolu)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Thu Nov 10, 2005 5:53 pm    Post subject: [g++] impossible de faire un delete ??? (résolu) Reply with quote

Je fais un dossier de c++ pour l'école. J'ai pas encore fais de destructeur, alors je m'y met. Mais, apparement, le "delete" ne fonctionne pas!!!

Message d'erreur:
Code:

Fin de INPRES-LOCAL-MAIL...
*** glibc detected *** free(): invalid pointer: 0x0805149c ***
Aborted


Et le code qui va avec:
Code:

Message *m1=new Message();
...
cout << "Fin de INPRES-LOCAL-MAIL..." << endl;
delete m1;


Le destructeur (juste pour savoir si je me planterai pas dans mon code):
Code:

les déclaration:
----------------
CorrespondantEMail* source;
CorrespondantEMail* destination[MAX_DESTINATION];

Message::~Message() {
   delete source;
   delete [] destination;
}


Je ne sais pas si la zone mémoire à été libérée...
J'ai une autre question: si on a une "string nom", il faut faire un delete aussi ou il y a un mécanisme d'automatisation?

Merci
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org


Last edited by loopx on Thu Nov 10, 2005 9:09 pm; edited 1 time in total
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8723
Location: ~Brussels - Belgique

PostPosted: Thu Nov 10, 2005 6:14 pm    Post subject: Reply with quote

Hmm, ne serait-ce pas plutôt
Code:
CorrespondantEMail* source;
CorrespondantEMail* destination[MAX_DESTINATION];

Message::~Message() {
   delete source;

   for (int i = 0 ; i < MAX_DESTINATION; i++)
     delete destination[i];
}


en fait
Code:
delete[]
est le pendant de
Code:
new []
, et ici tu as défini un array fixe de pointeurs.
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
Leander256
l33t
l33t


Joined: 05 Jul 2003
Posts: 910
Location: Singapour

PostPosted: Thu Nov 10, 2005 7:55 pm    Post subject: Re: [g++] impossible de faire un delete ??? Reply with quote

loopx wrote:
Code:

Fin de INPRES-LOCAL-MAIL...
*** glibc detected *** free(): invalid pointer: 0x0805149c ***
Aborted


Le destructeur (juste pour savoir si je me planterai pas dans mon code):
Code:

les déclaration:
----------------
CorrespondantEMail* source;
CorrespondantEMail* destination[MAX_DESTINATION];

Message::~Message() {
   delete source;
   delete [] destination;
}


Je mettrais ma main à couper (c'est du conditionnel hein) que tu n'as pas initialisé les pointeurs lorsque tu appelles le destructeur. La solution contre ça, c'est d'initialiser à 0 tes pointeurs dans le constructeur :
Code:

Message::Message() {
   ...
   source = 0;
   destination = 0;
   ...
}

Lorsque le programme fait un delete sur un pointeur nul, il ne se passe rien. D'autre part XavierMiller a bon concernant la suppression du tableau ;)

loopx wrote:
J'ai une autre question: si on a une "string nom", il faut faire un delete aussi ou il y a un mécanisme d'automatisation?

Non. Tu ne dois faire un delete que sur les pointeurs. Si tu ne fais pas un new, tu ne fais pas de delete.


Un conseil : si tu n'as jamais eu de cours de C++ et qu'on te faire un projet dans ce langage, essaye de trouver dans une bibliothèque un bouquin sur C++, sinon tu vas vraiment galérer.
Back to top
View user's profile Send private message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Thu Nov 10, 2005 9:08 pm    Post subject: Reply with quote

In fact...

J'avais quelque problème de logique :D. Ca fonctionne bien maintenant ;)

Merci :P
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum