Bonjours à tous,
Je suis en train de matter les sources d'un code et il y à quelque chose que je trouve bizarre. Voici le problème:
Texture.h
Texture.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class CTexture { public: virtual ~CTexture(); [...] protected: LPRICETEXTURE m_pTexture; //C'est ça qui nous intéresse };
Et dans l'autre class, hérité de la classe précédente
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CTexture::~CTexture(void) { //Il n'y a pas de free(m_pTexture); ici. Normal? }
OGLTexture.h
OGLTexture.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class COGLTexture : public CTexture //elle hérite de la class CTexture { friend class COGLRenderTexture; public: ~COGLTexture(); [...] };
En gros, ce qui m'étonne, c'est que ce n'est pas la class CTexture qui "free" sont m_pTexture mais la class "héritière". Ça ne me semble pas correct.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 COGLTexture::~COGLTexture() { [...] free(m_pTexture); [...] }
J'aurai plutôt écris les choses comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 COGLTexture::~COGLTexture() { [...] //free(m_pTexture); On vire le free ici [...] }Qu'en pensez vous?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CTexture::~CTexture(void) { free(m_pTexture); //Et je le met ici }
Merci d'avance pour vos avis éclairés!![]()
Partager