Bonjour!
Dans ma classe CGnomeapp, j'ai besoin de créer deux pointeurs vers deux autres classes CEchiquier et CFeuille. J'ai donc ecrit:

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;
};
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
#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;
}
lorsque je ferme le programme j'obtiens:
*** 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...
Par contre, si je suprime les delete du destructeur tout va bien....
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?