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

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Probleme avec operateur delete!


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

Probleme avec operateur delete!

samedi 10 avril 2004 à 20:43:46 | Probleme avec operateur delete!

WhiteSpi

Bonjour a tous,

J'ai une fonction qui construit un arbre de positions...
donc en gros je declare un :
Tree *tree= new struct Tree()
ensuite je le remplis, et pour le vider je fais appel a une fonction recursive que j'ai créée. La voici :

int Board::DeleteTree(struct Tree* tree)
{
if (tree!=NULL){
if (tree->Next!=NULL){
DeleteTree(tree->Next);
}
//delete sons
if (tree->Son!=NULL)
DeleteTree(tree->Son);
delete [] tree;
}
return 0;
}

Seulement... le delete fait bien peter les pointeurs... mais tout est toujours dans la pile si bien que ma memoire sature vite!!
Je vois vraiment pas la raison de ce probleme alors si qqun a une bonne idée a me suggerer je suis preneur ;)

Merci
WhiteSpi
samedi 10 avril 2004 à 21:32:47 | Re : Probleme avec operateur delete!

djl


oubli pas les typedef implicite en c++
Tree *tree= new Tree();

pour liberer

delete tree; et pas delete [] tree;

ne jamais melanger new/delete et new[]/delete[]
dimanche 11 avril 2004 à 00:23:55 | Re : Probleme avec operateur delete!

WhiteSpi

Ouais ok merci...
en fait a la base ct delete Tree mais comme ca marchait pas g tout essayé.. dont les crochets pour etre sur et j'avais oublié de les enlever.
Sinon pour ton autre remarque... ben c oci du au fait ke j'ai modifié ;)

Mais bon, cela dit ca suffit pas ca ne libere pas... je ne sais pas pourkoi..
merci kan meme

WhiteSpi
dimanche 11 avril 2004 à 01:46:29 | Re : Probleme avec operateur delete!

djl


ben ca a l'air juste ta fonction, faudrait que tu verifi les destructeurs qui vont etre appeler lors du delete (ceux des objet stocker par ex) pour voir si yen a pas un qui fait mal son boulot
dimanche 11 avril 2004 à 10:16:29 | Re : Probleme avec operateur delete!

WhiteSpi

Ouais mais a part que ce sont des structures en réalités que j'initialise comme ca... donc elles nt pas de destructeur...
Alors je me demande... a la limite ai-je le droit d'initialiser une structure a l'aide d'un new plutot qu'un malloc?
WhiteSpi
dimanche 11 avril 2004 à 10:48:49 | Re : Probleme avec operateur delete!

djl


une structure c'est une classe, donc ca a un destructeur par defaut si tu l'a pas defini, tu n'a pas besoin de le faire si ya pas de pointeur a liberer ou autre

"a la limite ai-je le droit d'initialiser une structure a l'aide d'un new plutot qu'un malloc?"

tu ve dire que tu allouait avec malloc? et apres tu fait delete ?
dimanche 11 avril 2004 à 13:55:37 | Re : Probleme avec operateur delete!

WhiteSpi

Non en fait j'alloue avec new().
mais comme je me dis qu'une structure ca appartient au langage C... enfin du mons c'est la que ca vient et qu'a l'origine on utilisait malloc() je me demandais donc juste si j'avais le droit de faire un new mais tu viens de repondre a ma question ;)
Par sontre effetivement j'ai des pointeurs a l'interieur de ma structure et c'est d'ailleur pour ca que je parcours l'arbre recursivement pour supprimer tout les structures pointées les une apres les autres.
Par contre tu dis qu'on peut mettre un destructeur dans une structure mais comment?
voila ma structure:
struct Tree{
int From;
int To;
struct Tree *Next;
struct Tree *Son;
};


WhiteSpi
dimanche 11 avril 2004 à 14:16:53 | Re : Probleme avec operateur delete!

djl


struct Tree{
int From;
int To;
struct Tree *Next;
struct Tree *Son;

Tree()
{
Next=new Tree();
Son=new Tree();
}

~Tree()
{
delete Next;
delete Son;
}

};

attention c'est juste un exemple, ca correspond peut etre pas a ton probleme vu que comme tu dit tu fait tes delete recursivement

c'est juste pour dire que oui struct c'est du c, struct ne signifi rien en c++, c'est un pseudo alias de class qui a ete garder pour la retro compatibilité avec le c

les attribut y sont donc par defaut publique mais on garde le typedef implicite

dimanche 11 avril 2004 à 23:57:14 | Re : Probleme avec operateur delete!

WhiteSpi

Ah d'accord je te remercie pour l'info.
Par contre concernant mon probleme je vois pas bien ce que le fait de mettre un detructeur et un constructeur pourrait resoudre...
M'enfin merci pour le tuyau.
Je ne vois vraiment pas d'ou le probleme peut venir... ca semble kan meme bizare que la memoire ne soit pas libérée mais j'ai testé en direct live avec un indicateur d'utilisation memoire et il est clair qu"a la generation de l'arbre une gross quantité de mémoire est requisitionnée... mais malheureusement non libérée!

@+
WhiteSpi
lundi 12 avril 2004 à 00:42:48 | Re : Probleme avec operateur delete!

djl


tu stok koi dans les noeuds et les feuilles?

tu alloue koi pendant la construction de l'arbre?

1 2

Cette discussion est classée dans : probleme, delete, tree, operateur, deletetree


Répondre à ce message

Sujets en rapport avec ce message

Probleme de delete suite à une allocation dynamique [ par Kaory ] Bonjour j'ai un petit (ou gros faut voir) probleme je manipule des char * et j'utilise des new et lorsqu'il vient le moment de les desallouer avec del Probleme avec delete [ ] [ par dchaux ] Bonjour,n'étant que peu initié en programmation, je suis soumis à un problème dont je ne sais comment me sortir.Dans le cadre de mon programme, je cré Probleme affichage de page [ par ralebole ] J'ai un petit probleme avec les pages de cppfrance. Depuis peu à chaque fois que j'ouvre une page sur cppfrance et sur tout code sources mes pas sur l Probleme de combobox [ par lunatic34 ] Salut a tous!!!!Voila mon probleme c ke je souhaite avoir une combobox rempli déja au lancement du prog etdonc moi je vais dans la methode OnInitdialo probleme de blockage avec ReadFile [ par Mick7 ] Slt, j'essaye de faire un ReadFile sur le Handle d'un CreatePipe mais le probleme est que quand ReadFile n'a rien a lire il se bloque. Je voudrai donc probleme de pointeur change [ par alphaone ] http://wingcommander.free.fr/mactransp.zipvoila mes sources fait avec dev cpp, alors quand vous compiler vous allez voir ma variable, s'affciher 2 foi Probleme de liberation de la memoire [ par Flothi27 ] Bonjour,Dans mon programme, j'alloue de la memoire avec un new donc j'utilise un delete pour liberer la memoire.Mais mon probleme se pose au niveau du probleme avec les instructions [ par developvbdebut ] Bonjour tout le mondeJe suis entreint de faire un projet puissance 4.J'ai un question concernant les instructions, je souhaiterais si possible les réd Problème avec delete [ par juju12 ] Bonjour;   L'extrait de code suivant(simplifié bien sûr) me cause problème :class Class1{}; int main(void){<b Probleme avec eclipse [ par zaibacker ] Salut,je compile sous eclipse et je ne sais pas si vous avez deja eu un probleme de ce genre: error 255'Building target: enebro.exe''Invoking: GCC C++


Nos sponsors


Sondage...

Comparez les prix

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 : 0,484 sec (4)

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