¿El borrado de void pointer garantiza la eliminación del tamaño correcto? [duplicar]
Posible duplicado:
¿Es seguro eliminar un puntero nulo?
Di que tengo unnew
asignación a una clase llamadaMyClass
y la asignación es tan simple como:
MyClass *myClassPtr = new MyClass();
Y almaceno referencia a la lista devoid*
donde simplemente digo
myListOfPointers.add(static_cast<void*>(myClassPtr)); // this has to be void*
Y luego libero la memoria así que en lugar de hacerlo:
delete myClassPtr
Yo suelo:
delete MyListOfPointer.get(0)
(Diga que la referencia de myClassPtr está en el índice cero). Además, tenga en cuenta que tiene que estarvoid*
ya que esta lista puede almacenar diferentes tipos de punteros, por lo que no sabría el tipo de puntero que estoy eliminando:
Así que no puedo hacer nada como:
delete static_cast<MyClass*>(MyListOfPointer.get(0))
¿De esta manera se va a liberar el tamaño de memoria correcto? (sizeof(MyClass)
)?
Nota:
No estoy buscando ninguna respuesta que apunte a punteros inteligentes.