Ich möchte ein dynamisch zugewiesenes Array löschen, indem ich alle Elemente durchlaufen und delete
auf jedem von ihnen aufrufen.
(Ich mache das, weil ich ein Array an einen anderen Ort "verschieben" muss, das heißt, das ursprüngliche Array kopieren und dann löschen, aber das würde zweimal die Zeit als das Kopieren jedes Elements und den Aufruf delete
auf ihnen dauern einzeln)Löschen von Elementen eines dynamischen Arrays einzeln
ich habe den folgenden Code:
int main()
{
int *n=new int[2];
delete n;
delete (n+1);
}
aber ich bin ein Segmentation Fehler bekommen jedes Mal, wenn ich diese laufen ....
Obwohl das funktioniert gut -:
int main()
{
int *n=new int[1];
delete n;
}
Also, meine Vermutung ist, dass Löschen löscht das gesamte Array anstelle von einem einzelnen Element!
Könnte jemand bitte erklären, wenn meine Vermutung richtig ist, und wenn ja, schlagen Sie eine mögliche Abhilfe vor?
Ich bin mit GCC 4.7.3 auf 13,04 Ubuntu
Die einfachste Methode ist die Verwendung von C++ - Standardcontainern (in diesem Fall 'std :: vector') anstelle von dynamischen Arrays und einfach die Erase-Methode des Containers. Aber was versuchst du auf der anderen Seite? Warum möchten Sie Elemente einzeln löschen? – Manu343726
Eigentlich habe ich versucht, einen weiteren vektorähnlichen Container zu machen. [Nur um zu verstehen, wie 'std :: vectors 'unter der Haube funktionieren] –
@Ammol C++ lernen? OK. Ihre Frage bezieht sich also auf den Destruktor des Vektors? Deshalb haben Sie versucht, ein Element nach dem anderen zu löschen? – Manu343726