指標 3(動態記憶體分配)

2022-05-04 13:54:09 字數 1108 閱讀 4183

動態記憶體分配(重點)

傳統陣列的缺點:

1.陣列長度必須事先制定,且只能是常數,不能是變數

例:int a[5];//ok

int len = 5; int a[len]; //error

2.傳統形式定義的陣列,該陣列的記憶體程式設計師無法手動釋放

在乙個函式執行期間,系統為該函式中陣列所分配的空間會一直存在,直到該函式執行完畢時,陣列的空間才會被系統釋放

3.陣列的長度一旦定義,其長度就不能再改變。陣列的長度不能在函式執行的過程中動態的擴充或縮小

4.a函式定義的陣列,在a函式執行期間可以被其它函式使用,但a函式執行完畢之後,a函式中的陣列將無法在被其它函式使用

傳統方式定義的陣列不能跨函式使用

為什麼需要動態分配記憶體

動態陣列很好的解決了傳統陣列的4個缺陷;傳統陣列也叫靜態陣列

/*

malloc 是memory(記憶體)allocate(分配)的縮寫

*/int

main()

int * p = &i; //int * p;p = &i;

malloc的第二種用法

#include

#include

#include

//malloc標頭檔案

動態記憶體分配舉例_動態陣列的構造

靜態記憶體和動態記憶體的比較

靜態記憶體是由系統自動分配,由系統自動釋放

靜態記憶體是在棧分配的

動態記憶體是由程式設計師手動分配,手動釋放

動態記憶體是在堆分配的

跨行使用記憶體的問題

指標 動態記憶體分配

c 中的動態記憶體分配機制 c 中使用new和delete來完成在堆上對動態記憶體的分配和釋放。注.所有指標都應該被初始化 如果指標指向的動態記憶體被釋放或沒有指向合法的位址,就應該將指標設定為nullptr,否則記憶體洩漏 變數 double pvalue pvalue new double pv...

指標 堆記憶體分配(動態記憶體)

一 對於普通陣列來說,在定義或初始化時必須確定元素個數,即下標必須是已知的,即在編譯時已知。例 定義陣列時 int a 6 初始化陣列時,float a 對陣列a來說,雖然沒有下標,但是通過 中的元素個數,可以查出其下標為4。像這樣的格式 int a 錯誤,下標未知 int a n 錯誤,同上 in...

C 動態記憶體分配3

動態建立多維陣列new 型別名t 下標表示式 1 下標表示式 2 如果記憶體申請成功,new運算返回乙個指向新分配記憶體首位址的指標,是乙個t型別的陣列,陣列元素的個數為除最左邊一維外各維下標表示式的乘積。例如 char fp 3 指向一維陣列的指標,即指向乙個整個陣列,如果指標加1,會跳過整個陣列...