A exclusão do ponteiro vazio garante a exclusão do tamanho correto? [duplicado]
Duplicata Possível:
É seguro excluir um ponteiro vazio?
Digamos que eu tenha umnew
alocação para uma classe chamadaMyClass
e alocação é tão simples como:
MyClass *myClassPtr = new MyClass();
E eu armazeno referência à lista devoid*
onde eu simplesmente digo
myListOfPointers.add(static_cast<void*>(myClassPtr)); // this has to be void*
E depois eu libero memória então ao invés de fazer:
delete myClassPtr
Eu uso:
delete MyListOfPointer.get(0)
(Digamos que a referência myClassPtr esteja no índice zero.) Além disso, observe que ela deve servoid*
já que essa lista pode armazenar diferentes tipos de ponteiros para que eu não saiba o tipo de ponteiro que estou excluindo:
Então eu não posso fazer nada como:
delete static_cast<MyClass*>(MyListOfPointer.get(0))
É assim que vai liberar o tamanho correto da memória? (sizeof(MyClass)
)
Nota:
Eu não estou procurando por nenhuma resposta apontando para ponteiros inteligentes.