¿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.

Respuestas a la pregunta(4)

Su respuesta a la pregunta