對於簡單的一維數組動態內存分配和釋放,相信大家都是知道的,不過還是舉個例子吧:
1 int *array1D; 2 //假定數組長度為m 3 //動態分配空間 4 array1D = new int [m]; 5 //釋放 6 delete [] array1D;
但是,對於多維數組動態分配,大家可能不太熟悉。下面以常見的二維和三維數組為例來說明:
1. 二維數組的動態分配和釋放
1 int **array2D; 2 //假定數組第一維長度為m, 第二維長度為n 3 //動態分配空間 4 array2D = new int *[m]; 5 for( int i=0; i<m; i++ ) 6 { 7 array2D[i] = new int [n] ; 8 } 9 //釋放 10 for( int i=0; i<m; i++ ) 11 { 12 delete [] arrar2D[i]; 13 } 14 delete array2D;
P.S. 事實上二維數組空間的釋放還可以更簡單地用:delete [] array2D;
2. 三維數組的動態分配和釋放
1 int ***array3D; 2 //假定數組第一維為m, 第二維為n, 第三維為h 3 //動態分配空間 4 array3D = new int **[m]; 5 for( int i=0; i<m; i++ ) 6 { 7 array3D[i] = new int *[n]; 8 for( int j=0; j<n; j++ ) 9 { 10 array3D[i][j] = new int [h]; 11 } 12 } 13 //釋放 14 for( int i=0; i<m; i++ ) 15 { 16 for( int j=0; j<n; j++ ) 17 { 18 delete array3D[i][j]; 19 } 20 delete array3D[i]; 21 } 22 delete array3D;
