Speicherverwaltung bei der Zuweisung von 2-D-Arrays
Ich habe ein zweidimensionales Array mit dem folgenden Code zugewiesen:
// Dynamic allocation
int **matrix=new int*[n];
for(int i=0;i<n;i++)
{
matrix[i]=new int[n];
}
Dies funktioniert gut.
Zunächst weisen wir ein Array von Integer-Zeigern zu. Dann ordnen wir jeden der früheren Zeiger weiter zu, um auf einen Speicherort von @ zu zeigen
ganze Zahlen. Dies erzeugt unser zweidimensionales Array.Ich weiß, dass ein Destruktor für ein dynamisch zugewiesenes Array wie folgt aussehen sollte:
~SquareMatrix()
{
delete [] OneDarray;
}
Die Betonung liegt auf[]
denn wenn es nicht geschrieben wird, wird nur das erste Element des Arrays gelöscht.
Aus ähnlichen Gründen muss ich wohl das @ platzier[]
zweimal, um das gesamte zweidimensionale Array zu löschen, z. B.
delete [] [] matrix;
Aber dies funktioniert nicht und gibt einen Kompilierungsfehler aus.
Was ist die richtige Vorgehensweise?