Ich sah ein Beispiel für die Verwendung der Funktion: Löschen in cpp und ich habe es nicht vollständig verstanden. der Code:löschen Funktion in C++
class Name {
const char* s;
//...
};
class Table {
Name* p;
size_t sz;
public:
Table(size_t s = 15){p = new Name[sz = s]; }
~Table { delete[] p; }
};
Was ist die genaue Wirkung des Befehls: delete[] p;
?
Ich denke, das Ziel war es, alle Zeiger in der Container-Tabelle zu löschen.
Die Klammern in delete[]
geben mir einen Hinweis, dass es ein Array von Zeigern auf Name löscht, aber die Größe des Arrays ist nicht angegeben, also wie "weiß" der Destruktor, wie viele Zeiger zu löschen?
möglich duplikat von [löschen vs löschen \ [\] operators in C++] (http://stackoverflow.com/questions/2425728/delete-vs-delete-operators-in-c) und [Wie funktioniert das Löschen in C++ weiß, wie viele Speicherbereiche gelöscht werden sollen (http://stackoverflow.com/questions/2327848/how-does-the-delete-in-c-know-how-many-memory-locations-to-delete) –
" alle Zeiger "- Beachten Sie, dass' Table' nur einen einzelnen Zeiger enthält. Es ist ein Zeiger auf ein dynamisch zugewiesenes Array von 'Name', aber es muss nur ein dynamisch erstelltes Objekt (das Array) freigegeben werden. –