Freigeben eines 2D-Arrays in C++

Saad Aslam 12 Oktober 2023
  1. Initialisierung eines 2D-Arrays in C++
  2. Verwenden Sie den Operator Löschen, um die Zuordnung eines 2D-Arrays in C++ aufzuheben
  3. Verwenden Sie die Operatoren malloc() und free(), um die Zuordnung eines 2D-Arrays in C++ aufzuheben
Freigeben eines 2D-Arrays in C++

In diesem Artikel wird erläutert, wie ein zweidimensionales Array in der Programmiersprache C++ initialisiert und freigegeben wird.

Die einfachste Version eines mehrdimensionalen Arrays, die in C++ erstellt werden kann, ist ein zweidimensionales Array; matrix ist ein anderer Name für ein zweidimensionales Array. Abhängig davon, wie es initialisiert wird, kann es einen beliebigen Typ haben, einschließlich Ganzzahlen, Zeichen, Gleitkommazahlen usw.

Der Operator new in C++ ermöglicht die dynamische Allokation eines zweidimensionalen Arrays, während der Operator delete die nachträgliche Freigabe des Arrays nach seiner Verwendung ermöglicht. Bei der Zuordnung zweidimensionaler Arrays mit Hilfe des Operators new stehen verschiedene Ansätze zur Verfügung.

Wenn dynamischer Speicher mithilfe eines freien Speichers zugewiesen wird, können Sie eine Referenz auf das erstellte Objekt erhalten. dieser Zeiger bezieht sich jedoch auf das erste Byte des zugewiesenen Bereichs.

Initialisierung eines 2D-Arrays in C++

Wir erstellen zuerst ein Array von Arrays, indem wir ein zweidimensionales Array namens arr mit fünf Zeilen und zwei Spalten verwenden.

int arr[5][2] = {
    {11, 12}, {13, 14}, {10, 12}, {14, 16}, {15, 17},
}

Das Folgende ist eine weitere Methode, die wir verwenden können, um ein zweidimensionales Array mit fünf Zeilen und zwei Spalten zu erstellen.

int arr[5][2] = {11, 12}

Wir haben den Prozess der Initialisierung eines zweidimensionalen Arrays abgeschlossen. Da wir es jedoch noch nicht gedruckt haben, können wir nicht überprüfen, ob die Operation korrekt durchgeführt wurde oder nicht.

#include <iostream>
using namespace std;

int main() {
  int arr[5][2] = {
      {11, 12}, {13, 14}, {10, 12}, {14, 16}, {15, 17},
  };
  int i, j;
  cout << "The array is shown as follows:\n" << endl;
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 2; j++) {
      cout << arr[i][j] << "\t";
    }
    cout << endl;
  }
}

Ausgang:

The array is shown as follows:

11      12
13      14
10      12
14      16
15      17

Verwenden Sie den Operator Löschen, um die Zuordnung eines 2D-Arrays in C++ aufzuheben

Das Freigeben des Arrays ist das wichtigste Feature in C++.

Der Eingriff des Programmierers ist erforderlich, um den RAM freizugeben, der dynamisch zugewiesen wurde. Das Freigeben oder Freigeben von Speicherplatz, der von einer Datenvariablen, einem Zeiger oder einem Array belegt ist, wird mit dem Operator Löschen erreicht.

Im folgenden Beispiel werden wir versuchen, Speicher für das Array freizugeben, und es setzt nur die erste Ganzzahl im Array auf 0 und lässt den Rest unverändert.

Deklarieren Sie in der Methode main() Ihres Programms zwei Variablen mit dem Datentyp int namens i und n.

int i, n;

Jetzt ist es an der Zeit, Eingaben über die Gesamtzahl der Ganzzahlen zu sammeln, die wir speichern möchten.

cout << "How many integers do you want to store?" << endl;
cin >> n;

Wir werden ein Array vom Typ int namens pointerArray mit einem Zeiger initialisieren.

int* pointerArray = new int[n];

Lassen Sie den Benutzer einige Eingaben machen, damit wir das Array mit einigen Zahlen füllen können. Wir verwenden eine for-Schleife, die Eingaben wiederholt und akzeptiert, bis sie Werte gleich der Anzahl von Ganzzahlen annimmt, die wir im System speichern möchten.

for (int i = 0; i < n; i++) {
  cout << endl;
  cout << "Please input an integer\n";
  cin >> pointerArray[i];
}

Wir werden die ganzen Zahlen ausgeben, die jetzt im Array enthalten sind. Dazu verwenden wir die for-Schleife.

cout << "Stored array values\n";

for (int i = 0; i < n; i++) {
  cout << pointerArray[i] << endl;
}

Um das Array freizugeben, müssen Sie zuerst den Operator delete[] verwenden. Noch einmal drucken wir das Array, um zu bestätigen, dass es effektiv freigegeben wurde.

cout << "Deallocating array\n";
delete[] pointerArray;

cout << "Print the array to check if the array is deallocated\n";
for (i = 0; i < n; i++) {
  cout << pointerArray[i] << endl;
}

Vollständiger Quellcode:

#include <iostream>
using namespace std;

int main() {
  int i, n;

  cout << "How many integers do you want to store?" << endl;
  cin >> n;

  int* pointerArray = new int[n];

  for (int i = 0; i < n; i++) {
    cout << endl;
    cout << "Please input an integer\n";
    cin >> pointerArray[i];
  }

  cout << "Stored array values\n";

  for (int i = 0; i < n; i++) {
    cout << pointerArray[i] << endl;
  }
  cout << "Deallocating array\n";
  delete[] pointerArray;

  cout << "Print the array to check if the array is deallocated\n";
  for (i = 0; i < n; i++) {
    cout << pointerArray[i] << endl;
  }
}

Ausgang:

How many integers do you want to store?
2

Please input an integer
2

Please input an integer
3
Stored array values
2
3
Deallocating array
Print the array to check if the array is deallocated
0
0

Verwenden Sie die Operatoren malloc() und free(), um die Zuordnung eines 2D-Arrays in C++ aufzuheben

In diesem Fall haben wir die Funktion malloc() verwendet, um dem Zeiger newPointer int Speicher mit einer Grösse von 0 zuzuweisen.

int* newPointer = (int*)malloc(0);

Danach verwenden wir eine if-Anweisung, um festzustellen, ob malloc() eine Adresse oder einen null-Zeiger geliefert hat. Wenn es eine Adresse erzeugt hat, fahren wir mit dem nächsten Schritt fort.

if (newPointer == NULL) {
  cout << "Null value";
} else {
  cout << "Address = " << newPointer;
}

Letztendlich haben wir den Speicher mit der Deallocation-Methode free() freigegeben.

free(newPointer);

Vollständiger Quellcode:

#include <cstdlib>
#include <iostream>
using namespace std;

int main() {
  int *newPointer = (int *)malloc(0);

  if (newPointer == NULL) {
    cout << "Null value";
  } else {
    cout << "Address = " << newPointer;
  }

  free(newPointer);
  return 0;
}

Ausgang:

Address = 0x56063cf64eb0
Autor: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn

Verwandter Artikel - C++ Array