Bonsoir à tous,
J'ai un comportement assez étrange avec delete, c'est pourquoi je me tourne vers vous ce soir ; en effet, je possède une classe contenant une variable membre de type pointeur, que j'alloue dynamiquement. (m_machin = new Machin() )Dans le destructeur de la classe en question, je détruis cette objet avec un simple delete m_machin ; j'ai en effet pu lire ici et là que delete s'occupait de vérifier l'existence du pointeur. Seulement, quand je fais simplement un delete m_machin, j'ai l'erreur suivante :
Pourtant, mon objet a bien été alloué dynamiquement, j'ai fais des tests.. En remplaçant par un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 malloc: *** error for object 0x2: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug
Ça marche mieux, ce qui semble logique ; mais je ne comprends pas pourquoi mon objet a été désalloué _avant_ que je ne fasse l'appel au delete ? Je précise que ma classe ne fait rien d'autre, c'est juste une classe de test toute vide là. ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if (m_machin) delete m_machin
Si vous avez une idée du pourquoi du comment !
Merci d'avance
Partager