C++:多維數組的動態分配(new)和釋放(delete)


對於簡單的一維數組動態內存分配和釋放,相信大家都是知道的,不過還是舉個例子吧:

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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM