Gewöhnliche Array
Ein Array kann wie folgt im normalen Speicher erstellt werden:
char arr [] = 'p', 'q', 'r', 's', 't';Um dieses Array zu löschen, lassen Sie es einfach aus dem Zielfernrohr gehen.
Kostenloses Ladenarray
Ein Array kann dynamisch während der Programmausführung im kostenlosen Geschäft erstellt werden. Ein solches Array kann wie folgt erstellt werden:
char *ptr = new char [5] 'p', 'q', 'r', 's', 't';Das gleiche Array kann in der C ++ - Hauptfunktion erstellt werden wie folgt:
char *ptr = new char [5];Hinweis der Verwendung des Operators, neu, hier. Der PTR ist ein Zeiger. ARR Oben ist auch ein Zeiger, wurde aber aus einem anderen Blickwinkel angefahren. Verwenden Sie zum Löschen dieses Arrays den Bediener, löschen Sie [] wie unten gezeigt. Das Array in Free Store kann nicht gelöscht werden, indem es aus dem Zielfernrohr geht. Daher muss es mit dem Löschen [] Operator gelöscht werden.
Dieser Artikel zeigt die unterschiedlichen Möglichkeiten, ein auf zwei Arten erstellter Array zu löschen.
Artikelinhalt
- Normales Array löschen
- Dynamisch erstelltes Zeigerarray des kostenlosen Ladens löschen
- Abschluss
Normales Array löschen
Um ein gewöhnliches Array zu löschen, lassen Sie es einfach aus dem Zielfernrohr gehen. Obwohl die Funktion main () die Kapitalfunktion eines C ++ - Programms ist, ist sie immer noch eine Funktion. Im folgenden Programm wird in der C ++ - Hauptfunktion ein Array in einem verschachtelten lokalen Bereich (Block) erstellt:
#enthaltenDie Ausgabe ist, q. Der verschachtelte Bereich ist der Block des If-Construct. Das Array wurde in diesem Block erstellt und im selben Block verwendet, indem der zweite Wert des Arrays gedruckt wurde. Am Ende des Blocks stirbt die Array -Variable. Wenn der Kommentarindikator direkt unter dem Block entfernt wird, wird das Programm nicht kompiliert, eine Fehlermeldung wird veröffentlicht. Dies liegt daran, dass das Array am Ende des Blocks gestorben ist.
Das folgende Programm veranschaulicht etwas Ähnliches, aber in einer Funktion namens FN ().
#enthaltenDie Ausgabe ist still, q. Wenn der Kommentarindikator direkt unter dem Funktionsblock entfernt wird, wird das Programm nicht kompiliert und eine Fehlermeldung wird ausgegeben. Dies liegt daran, dass das Array am Ende des Funktionsblocks gestorben ist (Umfang). Beachten Sie auch, dass die Zuordnung nach der Erklärung im globalen Bereich nicht zulässig ist.
Dynamisch erstelltes Zeigerarray des kostenlosen Ladens löschen
Da die Aufgabe nach der Erklärung im globalen Bereich nicht zulässig ist, wird das Array im kostenlosen Laden in einem verschachtelten Bereich zum C ++ - Hauptfunktionsblock, der unten dargestellt wird. Der Operator löschen [] wird im verschachtelten Bereich verwendet, um das Array wie folgt zu löschen:
#enthaltenDie Ausgabe ist ein 'q' aus der ersten Cout -Anweisung. Beachten Sie, dass der Name des Arrays PTR, als Argument (Parameter) des Löschoperators. Das Array, PTR für den kostenlosen Laden, wird mit dem Bediener „Delete [] () in demselben verschachtelten Bereich mit dem Bediener„ Delete [] () deklariert, verwendet und gelöscht. Wenn es aus dem Umfang ohne „löschen [] PTR“ wird, würde es nicht wirklich gelöscht, weil es sich im kostenlosen Laden befindet. Ein solches Array muss nach Verwendung mit dem Operator löschen [] in seinem Bereich gelöscht werden. Das Löschen mit dem Delete [] -Operator muss für das dynamische Array durchgeführt werden, um den freien Speicher frei zu machen (Speicherleck vermeiden).
Das folgende Programm veranschaulicht etwas Ähnliches, aber im C ++ - Hauptfunktionsbereich:
#enthaltenDie Ausgabe ist immer noch q, wie es sollte, mit dem Index. Der gesamte Interessenscode befindet sich direkt in der Hauptfunktion C ++. Obwohl die Funktion main () die Kapitalfunktion eines C ++ - Programms ist, ist sie immer noch eine Funktion des Funktionsbereichs oder Funktionsblocks.
Einbeziehung des Bibliothekskopfes
Wie oben erwähnt, wurde keine Bibliothek für die Verwendung der neuen oder löschlichen Betreiber aufgenommen. Die neuen und löschlichen Betreiber befinden sich jedoch in der neuen Bibliothek, die implizit enthalten ist. Die neuen und löschlichen Betreiber sind vom globalen Umfang. Die Bibliothek kann weiterhin wie im folgenden Programm für das normale Array aufgenommen werden:
#enthaltenDas Programm funktioniert ohne Probleme. Die Bibliothek kann wie im folgenden Programm weiterhin für ein dynamisches Zeiger -Array im kostenlosen Laden aufgenommen werden:
#enthaltenDas Programm funktioniert ohne Probleme. Hinweis: Einschließlich der neue Header (Bibliothek) ist nicht obligatorisch.
Abschluss
Um ein gewöhnliches Array zu löschen, lassen Sie es einfach aus dem Zielfernrohr gehen. Verwenden Sie den Bediener, löschen Sie [] ArrayName, um ein dynamisches Zeiger -Array des kostenlosen Speichers im selben Bereich zu löschen. Das Array -Löschbetreiber kann ein zweites und/oder drittes Argument haben. Dies ist jedoch eine Diskussion für einige andere Zeit.