Comment libérer des pointeurs efficacement ?
Bonjour tout le monde,
J'ai un problème j'utilise ce code pour libérer mes pointeurs :
Code:
1 2 3 4 5 6 7 8 9
| template <typename B>
static void SafeDelete(B & pointer)
{
if( pointer )
{
delete pointer ;
pointer = nullptr ;
}
} |
SafeDelete est une fonction extérieure aux classes, et le problème est que si un pointeur à déjà été libéré, avec le code ci-dessus, le programme va quand même dans le if, et plante.
Quelqu'un pourrait il m'aider ?
J'ai également une question : doit on libérer dans le destructeur, les smart pointeurs s'ils ne sont pas encore libérés ?