Nein!
Sie müssen nicht delete
irgendetwas, weil Sie nichts mit new
zuweisen.
Betrachten Sie die folgenden Schnipsel:
int x[10];
void method() {
int y[10];
int *z = new int[10];
delete z;
}
die erste Erklärung, int x [10], statische Speicherdauer verwendet, durch cppreference definiert als: "Der Speicher für das Objekt zugewiesen wird, wenn die Programm beginnt und rückgängig gemacht, wenn das Programm beendet. Nur eine Instanz des Objekts existiert. Alle Objekte im Namespace-Bereich deklariert (einschließlich globalen Namespace) haben diese Speicherdauer, zuzüglich der mit statischen oder externen deklariert.
Die zweite, int y [10], Dauer verwendet automatische Speicherung, durch cppreference definiert als:. "das Objekt am Anfang des einschließenden Codeblock zugeordnet wird und freigegeben am Ende Alle lokalen Objekte haben diese Speicherdauer, mit Ausnahme derer, die als statisch, extern oder thread_local deklariert sind. "
Die dritte, int * z = new int [10], wird normalerweise als dynamische Speicherzuweisung bezeichnet. Dynamische Speicherzuordnungen sollten explizit freigegeben werden.
'memcpy()' selbst macht keine Speicherzuweisungen. – user0042
Sie "löschen", was Sie "neu", und "löschen []", was Sie 'neu []'. Du machst weder 'new' noch' new [] '. –
Quell- und Zielarrays sind auf dem Stapel zugeordnet und werden automatisch freigegeben, wenn sie den Gültigkeitsbereich verlassen. – VTT