動態分配陣列

2021-06-26 06:01:29 字數 737 閱讀 1094

注意,刪除操作不會刪除該指標-它刪除指標所指向的記憶體!

動態分配陣列

動態陣列的宣告讓我們執行程式時選擇自己的大小。動態分配陣列,我們使用新的和刪除陣列形式(通常稱為新的[ ]和[ ]刪除):

123

4int nsize = 12;

int *pnarray = new int[nsize]; // note: nsize does not need to be constant!

pnarray[4] = 7;

delete pnarray;

因為我們是分配乙個陣列,c++知道應使用新的而不是新的標量版陣列版。從本質上講,新的運營商稱為[ ],[ ]即使不放在旁邊的新關鍵字。

當刪除動態分配的陣列,我們不得不使用陣列版本刪除,並刪除[ ]。這會告訴cpu,需要清理的多變數而不是乙個單一的變數。

值得注意的是,陣列的訪問做同樣的方式與動態分配的陣列與普通陣列。雖然這看起來有點滑稽,因為pnarray顯式宣告為指標,記住陣列是真的只是在c++中指標吧。

最常見的乙個錯誤就是新的程式設計師在處理動態記憶體分配是使用刪除而不是刪除[ ]當刪除動態分配的陣列。不這樣做!使用標量版本的陣列上的刪除會導致資料損壞或其它問題。

記憶體洩漏

動態分配的記憶體實際上沒有範圍。那是,它保持分配直到顯式釋放或直到程式結束。然而,指標用於訪問動態記憶體分配遵循正態變數的作用域規則。這種不匹配可以創造出有趣的問題。

考慮下面的函式:

動態分配陣列C 模板

通過動態分配的方法實現了動態陣列的建立,其中包括多種運算子過載。include define size 100 using namespace std template class array 有參建構函式,引數為陣列的長度 array int n length n 有參建構函式,引數為陣列的長度和...

C語言動態分配陣列

最近在研究c語言相關的東西,遇到了一些問題,主要是關於陣列記憶體分配的問題。我們最常用的陣列分配方式就是使用 int array 來分配固定長度的陣列,但是當需要動態分配陣列長度的時候怎麼辦呢?最近在使用的時候就遇到了,然後自己搜了搜相關的使用方法。1.先介紹基本資料型別的建立方法 int arra...

關於c 的動態分配陣列

在c 中,陣列的長度的值應該是乙個具體的數字,不能是乙個變數。通常我們借助指標來給動態分配陣列 一維陣列 int n cin n int a new int n 二維陣列 int n cin n int a new int n for int i 0 i n i int n cin n char a...