voila, je me présente, je suis nouveau, je programe en C++ depuis 3 semaines, avant j'avais seulement apris le java en cour.
mon problème est le suivant (je l'ai complêtement identifier, ça simplifira ça compréhention et la solution pour m'aider ^^) :
pour arrivé directement à l'essentiel j'ai :
là où le problème ce pose c'est que les "pointeurPere" et "...Mere" me serve à localisé un Gene* dans un Chromosome pour ensuite faire pointer des objet dessu (d'autre Gene qui ont pour particularité d'avoir en interne un autre Gene*).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 typedef list<Gene*> structAdn; class Chromosome{ ... structAdn adn; ... } typedef list<Chromosome> chromolist; typedef map<string,Gene*> reference; class Genotype { ... reference * pointeurPere; reference * pointeurMere; chromolist genomPere; chromolist genomMere; ... }
Lors de l'appel du constructeur de Genotype de fait les map reference qui lie les nom des Gene avec un pointeur sur eux, pour les retrouver plus rappidement quand je créé plus tard les Gene qui utiliseront ces pointeurs.
La où mon problème ce pose : les allocator par défaut de la STL qui von avec le map, me pause un problème, j'aimerai bien détruire les map de reference entre String et Gene*, le problème qui se pause, si je fait un
delete pointeurPere;
cela se traduit par un appel de la destruction du map, qui possède un allocator par défaut qui lui lance un
delete Gene;
de tout les élément du map, or, les génes sont toujours utilisé, et du cou ça me bousille ma structure de donné, et si je fait l'appel du destructeur de map dans le ~Genotype(), je me retrouve devant le nouveau problème que ce cou si, les Gene du map n'existe plus et les pointeur du map pointe sur une zone de mémoire quelconque, et j'ai un gentil seg fault.
la solution que je cherche : comment modifier l'allocator d'un map pour lui dir de ne rien faire, ou de seulement géré les string, parceque sinon j'ai une très légère fuite de mémoire puisque je ne peut pas delete les pointeur de map<string,Gene*>
j'ai la réputation d'être extrèment peut claire, et toujours particulièrement compliquer, donc pour mon premier poste est ce que je doit réexpliquer un truc pas claire ?
Partager