Czy usunięcie pustego wskaźnika gwarantuje usunięcie właściwego rozmiaru? [duplikować]
Możliwy duplikat:
Czy usunięcie wskaźnika pustego jest bezpieczne?
Powiedz, że mamnew
alokacja do klasy o nazwieMyClass
a przydzielanie jest tak proste, jak:
MyClass *myClassPtr = new MyClass();
I przechowuję odnośnik do listyvoid*
gdzie po prostu mówię
myListOfPointers.add(static_cast<void*>(myClassPtr)); // this has to be void*
A później wypuszczam pamięć, więc zamiast:
delete myClassPtr
Używam:
delete MyListOfPointer.get(0)
(Powiedzmy, że referencja myClassPtr ma indeks zerowy.) Należy również pamiętać, że tak musi byćvoid*
ponieważ ta lista może przechowywać różne typy wskaźników, więc nie znałbym typu wskaźnika, który usuwam:
Więc nie mogę zrobić nic takiego:
delete static_cast<MyClass*>(MyListOfPointer.get(0))
Czy w ten sposób zostanie wydany właściwy rozmiar pamięci? (sizeof(MyClass)
)?
Uwaga:
Nie szukam odpowiedzi wskazującej na inteligentne wskazówki.