Dreidimensionales Array freigaben
-
Hallo,
ich habe mir ein dreidimensioanles Array erstellt:
int ***zahlen = new int**[MAX]; for(int i=0;i<MAX;i++) { zahlen[i] = new int*[MAX]; for(int j=0;j<MAX;j++) { zahlen[i][j] = new int[MAX]; for(int k=0;k<MAX;k++) zahlen[i][j][k] = i*j*k; } }Jetzt möchte ich dieses Array wieder freigeben aber ich glaube das es nicht richtig ist:
for(int i=0;i<MAX;i++) { for(int j=0;j<MAX;j++) { delete[] zahlen[i][j]; } delete[] zahlen[i]; } delete[] zahlen;Wie gebe ich so ein Array wieder frei ?
mfg
-
Genau auf dem umgekehrten Weg wie du allokiert hast, passt also. Oder spar dir den Spaß und verwende boost::multi_array.
grüße
-
Vielen Dank schonmal, aber bist du dir wirklich sicher das der gesamte Speicher wirklich freigegeben wird ?
-
Wenn MAX eine Konstante ist, deren Wert zur Compilezeit feststeht, dann erstelle dein dreidimensionales Array so:
int(*zahlen)[MAX][MAX] = new int [MAX][MAX][MAX]; for(int i=0;i<MAX;i++) { for(int j=0;j<MAX;j++) { for(int k=0;k<MAX;k++) zahlen[i][j][k] = i*j*k; } } delete[] zahlen;
mfg