動態記憶體分配

2021-06-25 17:00:09 字數 671 閱讀 8176

任何動態分配的變數都不可能在編譯期間定義,所以源程式中沒有其名稱。

當建立這些變數時,計算機用記憶體中相應的位址來標識他們,該位址被儲存在指標中。

借助指標和vc2008的動態記憶體管理工具,能使編寫的程式具備這種靈活性。

1)堆,自由儲存器,程式執行後未被使用的記憶體。

new可 在堆中為特定型別的新變數分配空間,返回分配變數的記憶體位址

delete釋放new分配的記憶體

如:double* pvalue=null;

pvalue=new double;//新變數分配空間,返回分配變數的記憶體位址,系統如果沒有足夠的記憶體空間,new運算子將丟擲乙個異常,從而使程式終止。

*pvalue=999.0;

或double* pvalue=null;

pvalue=new double(999.0);

delete pvalue;//防止記憶體洩漏

pstr=null;

2)為陣列動態分配記憶體

char* pstr=null;

pstr=new char[20];

delete pstr;//是為了指出要刪除的是乙個陣列

pstr=null;

3)多維陣列的動態分配

pbeans=new double [3][4];

delete pbeans;

動態記憶體分配

在c 中建立乙個物件時,我們必須要為這個物件申請一塊記憶體,而且要用建構函式對這塊記憶體進行初始化。c 中的new和delete相對於c的庫函式malloc和free在這方面有很大的優勢,所以我們主要講的是運算子new和delete。當用new來建立乙個物件時,它會自動在堆裡為物件分配記憶體並且為這...

動態記憶體分配

為什麼使用動態記憶體分配?c語言中的一切操作都是基於記憶體的 變數和陣列都是記憶體的別名,如何分配這些記憶體由編譯器在編譯期間決定 定義陣列的時候必須指定陣列唱的 而陣列長度是在編譯期就必須決定的 需求 程式執行的過程中,可能需要使用一些額外的記憶體空間 malloc和free malloc和fre...

動態記憶體分配

c的儲存類別有4種 自動的 auto 靜態的 statics 暫存器的 register 外部的 extern 全域性變數時分配在記憶體中的靜態儲存區 靜態區域性變數屬於靜態儲存類別,在靜態儲存區內分配儲存單元,是在編譯時賦初值的,只賦初值一次,在程式執行時它已有初值,以後每次呼叫函式時不再重新賦初...