Bonjour,
Voila j'ai un petit probleme de desallocation.
j'ai un fenetre qui lorsque l'utilisateur clique sur un bouton, cela fait appel a des fonctions et dont l'une d'elle a travail avec un tableau de TComposant (TComposant est une classe que j'ai créer).
j'alloue ce tableau de TComposant sdynamiquement comme ceci :
Puis à chaque nouvelle case du tableau je crée un TComposant dynamique comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mpComposants = new TComposant*[mNbComposants];
Jusqu'ici pas de probleme, du moins je crois
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mpComposants[nbcomposants] = new TComposant;
Mais voila mon probleme.
Si dans l'ensemble des fonctions que mon bouton appelle il y a une erreur mon programme affiche cette erreur et reviens a la fenetre de depart.
j'ai alors un tableau alloué dynamiquement ansi que quelques TComposant.
L'utilisateur reclique sur le bouton, alors le programme va reallouer le teableau et les TComposant.
Je delete le tableau et les TComposant seulement quand je reussi et que je quitte la fenetre.
Je pensais faire un test comme suit, allouer de la memoire au premier clique et desalouer puis realouer de nouveau si il y a eu un bug.
Mais ca ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 if(mpComposants == NULL) { mpComposants = new TComposant*[mNbComposants]; } else { for (int i=0; i < mNbComposants; i++) delete mpComposants[i]; delete[] mpComposants; mpComposants = new TComposant*[mNbComposants]; }
J'espere que j'ai été clair.
En gros, comment tester si un tableau a deja été allouer ou nom ?
Merci d'avance,
Partager