Bonjour!
Dans ma classe CGnomeapp, j'ai besoin de créer deux pointeurs vers deux autres classes CEchiquier et CFeuille. J'ai donc ecrit:
et dans le .cc:
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 #include <gtkmm.h> #include <iostream> class CEchiquier; class CFeuille; class CGnomeapp : public Gtk::Window { public: //constructeur et destructeur CGnomeapp(); virtual ~CGnomeapp(); protected: CEchiquier* m_pechiquier; CFeuille* m_pfeuille; };
lorsque je ferme le programme j'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "CGnomeapp.h" #include "CEchiquier.h" #include "CFeuille.h" CGnomeapp::CGnomeapp():m_pechiquier(new CEchiquier),m_pfeuille(new CFeuille),m_lfenetre(600),m_hfenetre(600) {....} CGnomeapp::~CGnomeapp() { delete m_pfeuille; delete m_pechiquier; }
Par contre, si je suprime les delete du destructeur tout va bien....*** glibc detected *** /home/...: free(): invalid pointer: 0x00000000006c7658 ***
======= Backtrace: =========
/lib64/libc.so.6[0x2b1f76e69f9a]
/lib64/libc.so.6(cfree+0x8c)[0x2b1f76e6dc1c]
/home/...[0x40e4fb]
/home/...[0x41ef15]
/home/...[0x421aa3]
/lib64/libc.so.6(__libc_start_main+0xf4)[0x2b1f76e18ae4]
/home/...(_ZN4Glib6ObjectD1Ev+0x61)[0x408089]
======= Memory map: ========
etc...
Pourtant, si j'ai bien compris le cours de C++ du site il est nécéssaire de faire suivre mes deux "new" de la liste d'initialisation par des "delete" non?
Partager