[C++]Représentation d'un arbre et memory leak

Mr.Mime -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Salut!

Je suis en train de faire un programme qui parcourt un arbre.
Je le fais de façon récursive avec une seule fonction :

1- Je donne un noeud de départ (la racine).
2- Je regarde à l'intérieur du noeud le nombre de noeuds de plus bas niveau

Je pensais n'utiliser qu'une seule giga structure récursive :

struct directory_data
{
int dir_count;
string path;
directory_data *dir;
};


De cette facon, je n'ai qu'une seule structure (appelons là toplevel) qui contient tous les noeuds de plus bas niveau.
Ex: toplevel.dir[0] pour aller au noeud 0 de la racine.Cependant, lorsque j'aurais, disons, toplevel.dir[24].dir[256].dir[1], j'aurais fait un paquet d'allocation dynamiques s'emboitant les unes aux autres .

Donc ma question!
Faudra-il TOUT reparcourir pour désallouer chaque tableau ou simplement "delete toplevel;" (LA STRUCT du plus haut niveau, qui contient toutes les alloc de plus bas niveau) marcherait? J'ai pensé utilisé les vecteurs, mais est-ce le chemin à emprunter si je ne compte que "lire" l'arbre sans le modifier? Je n'ai trouvé aucune utilité des fonctions push_back ou autres...
Merci de vos lumières :)


Ps. Si le bonne façon de faire est d'utiliser un conteneur, est-ce que je pourrais savoir comment on désalloue mon arbre quand même? :p


A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Si tu utilises le langage C++ tu devrais construire une classe pour représenter ta structure. Ainsi tu pourras définir ta désallocation mémoire en surchargeant le destructeur (une méthode spéciale appelée dès qu'un objet n'est plus utilisée).
0