Löschen von Array in C ++

Löschen von Array in C ++
In diesem Artikel geht es darum, wie ein Array in C gelöscht werden kann++. Es enthält auch das Löschen des Zeigerarrays. Vorher muss festgestellt werden. Wenn ein Programm ausgeführt wird, erhält es zwei Speicherteile: normaler Speicher, den es verwendet; und kostenloser Laden, den es möglicherweise verwenden oder nicht. Ein Array kann im normalen Speicher oder im kostenlosen Geschäft erstellt werden. Die Syntaxe, um ein Array in beiden Speicherabschnitten zu erstellen, sind unterschiedlich. Ansonsten ist es das gleiche Array. Die Art und Weise, wie sie gelöscht werden können.

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];
ptr [0] = 'p'; ptr [1] = 'q'; ptr [2] = 'r'; ptr [3] = 's'; ptr [4] = 't';

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:

#enthalten
Verwenden von Namespace STD;
int main ()

if (1 == 1)
char arr [] = 'p', 'q', 'r', 's', 't';
Cout<
// Cout<Rückkehr 0;

Die 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 ().

#enthalten
Verwenden von Namespace STD;
void fn ()
char arr [] = 'p', 'q', 'r', 's', 't';
Cout<
// arr [1] = 'u';
int main ()

fn ();
Rückkehr 0;

Die 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:

#enthalten
Verwenden von Namespace STD;
int main ()

if (1 == 1)
char *ptr = new char [5] 'p', 'q', 'r', 's', 't';
Cout<löschen [] ptr;
Cout<
Rückkehr 0;

Die 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:

#enthalten
Verwenden von Namespace STD;
int main ()

char *ptr = new char [5] 'p', 'q', 'r', 's', 't';
Cout<löschen [] ptr;
Rückkehr 0;

Die 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:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

if (1 == 1)
char arr [] = 'p', 'q', 'r', 's', 't';
Cout<
// Cout<Rückkehr 0;

Das Programm funktioniert ohne Probleme. Die Bibliothek kann wie im folgenden Programm weiterhin für ein dynamisches Zeiger -Array im kostenlosen Laden aufgenommen werden:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

if (1 == 1)
char *ptr = new char [5] 'p', 'q', 'r', 's', 't';
Cout<löschen [] ptr;

Rückkehr 0;

Das 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.