多維陣列的動態分配

2021-05-23 11:26:20 字數 698 閱讀 2143

與一維陣列相比,在自由儲存器中為多維陣列分配記憶體需要以略微複雜的形式使用new運算子。假設我們已經適當地宣告了指標pbeans,為了使本章前面曾經用過的陣列beans[3][4]獲得空間,可以使用下面這條語句:

pbeans = new double [3][4];         // allocate memory for a 3x4 array 

我們只需在陣列元素型別之後的方括號內指定陣列兩維的大小即可。

如下所示,用new運算子給三維陣列分配空間只需再指定第三維即可:

pbigarray = new double [5][10][10]; // allocate memory for a 5x10x10 array 

無論建立的陣列有多少維,我們都可以用下面這條語句將陣列銷毀,並將記憶體釋放到自由儲存器中:

delete  pbigarray;        // release memory for array 

前面曾經看到,可以使用變數來指定new分配的一維陣列的大小。對二維或多維陣列來說同樣如此,但僅限於用變數指定最左邊那一維。所有其他維都必須是常量或常量表示式。因此我們可以這樣寫:

pbigarray = new double[max][10][10]; 

其中max是乙個變數。但是,給不是最左邊的維指定變數將使編譯器生成出錯訊息。

C多維陣列動態分配與釋放

寫 的時候會碰到多維陣列的記憶體分配和釋放問題,在分配和釋放過程中很容易出現錯誤。下面貼上一些示例 以供參考。如果要給二維陣列 m n 分配空間,可以寫成下面 char a,i 先分配m個指標單元,注意是指標單元 所以每個單元的大小是sizeof char a char malloc m sizeo...

動態分配陣列

注意,刪除操作不會刪除該指標 它刪除指標所指向的記憶體!動態分配陣列 動態陣列的宣告讓我們執行程式時選擇自己的大小。動態分配陣列,我們使用新的和刪除陣列形式 通常稱為新的 和 刪除 123 4int nsize 12 int pnarray new int nsize note nsize does...

動態分配空陣列

c 雖然不允許定義長度為0的陣列變數,但明確指出,呼叫new動態建立長度為0的陣列是合法的。char arr 0 錯誤 char cp new char 0 正確 用new動態建立長度為0的陣列時,new返回有效地非零指標。該指標與new返回的其他指標不同,不能進行解引用操作,它畢竟沒有指向任何元素...