C++ embrouille avec les new et delete[]

C++ embrouille avec les new et delete[] - C++ - Programmation

Marsh Posté le 07-05-2002 à 10:56:58    

voila, je suis en train de m'embrouiller la tête avec lew new et les delete[].
En fait, j'ai:

Code :
  1. CHTMLTreeViewItem** pNewItemEnfants = new CHTMLTreeViewItem*[m_lgNbItemsEnfants + 1];


 
pour chacun de ces truc, je doit faire un

Code :
  1. delete[] pNewItemEnfants;


 
c propre ça d'après vous !?
(à priori, je dirais que non, mais un delete[] *pNewItemEnfants plante !

 

[jfdsdjhfuetppo]--Message édité par el_gringo le 07-05-2002 à 10:58:57--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 07-05-2002 à 10:56:58   

Reply

Marsh Posté le 07-05-2002 à 11:31:57    

Mon prog marche, ms bon, les Cplusplusiens, vous connaissez tous ça. Si on nettoie mal, ça fini tjs par merder...

Reply

Marsh Posté le 07-05-2002 à 11:54:45    

ça insipre personne !?
c pourtant sympathique la gestion des pointeurs et autres pointeurs de pointeurs ! :D

Reply

Marsh Posté le 07-05-2002 à 12:14:01    

el_gringo a écrit a écrit :

ça insipre personne !?
c pourtant sympathique la gestion des pointeurs et autres pointeurs de pointeurs ! :D  




 
2 cas:
 
1. toto = new object();  -> delete toto;
2. toto = new char[123]; -> delete [] toto;
 
quand tu alloues un tableau, il faut un delete [], sinon un 'simple' [] suffit.
 
donc oui, delete[] pNewItemEnfants, c'est propre.
Eventuellement, si par la suite tu as alloués les pointeurs par pNewItemEnfant[i] = new CHTMLTreeViewItem() , il faut d'abord faire un delete pNewItemEnfant[i] pour tous les i, et ensuite seulement un delete [] pNewItemEnfant
 
 
j'espère avoir été clair.
a+

Reply

Marsh Posté le 07-05-2002 à 12:14:47    

SoWhatIn22 a écrit a écrit :

 
quand tu alloues un tableau, il faut un delete [], sinon un 'simple' [] suffit.




 
trompé:
 
quand tu alloues un tableau, il faut un delete [], sinon un 'simple' delete suffit.

Reply

Marsh Posté le 07-05-2002 à 14:06:54    

Merci, a+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed