Gewährleistet das Löschen des ungültigen Zeigers das Löschen der richtigen Größe? [Duplikat]
Mögliche Duplikate:
Ist es sicher, einen leeren Zeiger zu löschen?
Angenommen, ich habe einenew
Zuordnung zu einer Klasse namensMyClass
und die Zuordnung ist so einfach wie:
MyClass *myClassPtr = new MyClass();
Und ich speichere Referenz auf die Liste vonvoid*
wo ich einfach sage
myListOfPointers.add(static_cast<void*>(myClassPtr)); // this has to be void*
Und später gebe ich Speicher frei, anstatt zu tun:
delete myClassPtr
Ich benutze:
delete MyListOfPointer.get(0)
(Angenommen, die myClassPtr-Referenz hat den Index Null.) Beachten Sie auch, dass dies der Fall sein mussvoid*
Da diese Liste verschiedene Zeigertypen speichern kann, würde ich den Zeigertyp, den ich lösche, nicht kennen:
Also kann ich nichts machen wie:
delete static_cast<MyClass*>(MyListOfPointer.get(0))
Wird auf diese Weise die richtige Speichergröße freigegeben? (sizeof(MyClass)
)?
Hinweis:
Ich suche keine Antwort auf intelligente Zeiger.