WxWidgets : new et delete

Résolu
Signaler
Messages postés
45
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
23 août 2007
-
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
-
slt tlm, voila je programme une IHM avec wxWidgets (v 2.4.2 + Dev c++ 4.9.9.0) mais je me rend compte qu'une chose me choque dans tt les tuto et exemples que j'ai lu : apres un new il n'y a jamais de delete !
pour une ligne genre de celle ci
m_noteBook = new wxNotebook( m_panel,ID_NOTEBOOK,wxPoint(5,0),wxSize (385,230) );

alors dans un soucis de propreté du code et de mon app j'ai mis les delete de chcun de mes pointeur qui on eu un new mais voila mon application plante lorsque je la ferme (mes delete sont dans le destructeur de la classe deriver de wxFrame )
bien sur aucun delete des page d'un notebook car elle sont gerré par le notebook

et pour finir : il faudrai aussi que je fasse un delete de l'objet de la classe deriver de wxFrame mais où ?j'ai essayer dans le destructeur de la classe deriver de wxApp mais ca plante a la fermeture !

alors comme solution que j'ai testé y a je ne fait pas d'objet dynamique (donc au lieu d'avoir comme attribut des pointeur y a des objets auxquels je fait un create ) mais la je comprend pas pourquoi mais le compilo est pas content

5 réponses

Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Je confirme ce que dit djl; ne t'en fais pas, wxWidgets libère tout seul l'espace alloué. A la fin du programme, c'est à dire quand la fenêtre (wxFrame) principale est détruite, est appelée une méthode wxFrame::Destroy() si je me rappelle bien. Cette méthode fait tous les delete requis, en parcourant les widgets fils (boutons, menus...) et en les supprimant.
Par contre, si tu ne crées pas tes objets via new, effectivement le compilo sera pas content, parce qu'à un endroit dans le code de wxWidgets est fait un delete sur quelque chose qui n'est pas sur le tas...;)

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
lis la doc, c'est sans doute ton api qui s'occupe de les libèrer
Messages postés
45
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
23 août 2007

bas justement j'ai lu la doc et la seule fois ou il en parle c'est pour les page d'un controle qui sont gerrer par le control et qui ne nessecite pas de faire de delete le reste ils en parle pas
Messages postés
45
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
23 août 2007

merci, j'avais surement mal regardé la doc.
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
Bonjour,

Pour être précis c'est le parent qui s'occupe de supprimer ses enfants.

dans le cas décrit plus haut :

m_noteBook = new wxNotebook( m_panel,ID_NOTEBOOK,wxPoint(5,0),wxSize (385,230) );

c'est donc m_panel qui supprimeras m_noteBook

A+

Fred