C 動態記憶體分配

2021-10-07 08:52:14 字數 761 閱讀 4861

運算子new 用於申請動態儲存空間,它的運算元作為某種資料型別可以帶有初始值表示式或元素個數。對於只儲存乙個基本型別的資料指標,使用new為其動態分配的語法格式為:

指標=new  型別名;

其中型別名表示要分配的變數型別(如 char ,int ,double等);指標表示指向「型別名」型別變數的指標(如 char * ,int * ,double * 等)。例如語句  :   int  * p=new int;

動態分配了乙個int型的變數,並將此變數的位址賦值給int 型別的指標p。如果需要在分配的變數同時為其賦值,則可以在型別之後加上初值表示式(放在圓括號內)。列如語句 : int * p= new int(10);

不僅動態地分配了int 型變數而且將其值初始化為10 

運算子new 還可以用來對數字進行動態分配,這時需要在資料型別後面新增方括號,並在其中指明所要分配的陣列元素個數。列如語句: int * p1=new int[10];

位含有10個元素的int型陣列進行動態儲存分配,然後把該陣列的首元素位址賦值給指標p1。此時p1指向記憶體中的一片可以容納10個int型元素的連續儲存空間。注意new 運算子沒有提供對動態分配的陣列進行初始化的語法結構。

當動態分配的記憶體空間在程式中使用完畢之後,必須顯式地將他們釋放。在c++程式中由new 分配的動態記憶體空間必須通過delete運算子釋放。使用delete對動態分配的單個變數進行釋放的語法格式為:

delete 指標 名;

使用delete對動態分配的陣列進行釋放的語法格式為:delete 指標名;

c語言動態記憶體分配 C 動態記憶體分配

動態記憶體分配 雖然通過陣列就可以對大量的資料和物件進行有效地管理,但是很多情況下,在程式執行之前,我們並不能確切地知道陣列中會有多少個元素。這種情況下,如果陣列宣告過大,就會造成浪費 宣告過小,就會影響處理。在c 中,動態記憶體分配技術可以保證程式在執行過程中按照需要申請適量記憶體,使用後釋放,從...

c 動態記憶體分配

c語言中提供的動態記憶體分配為了解決陣列的靜態的分配方式的問題 即陣列大小必須在定義時指定,程式在執行時不能動態改變陣列的大小 在標準庫中提供了三個動態記憶體分配的函式供程式呼叫,下面將分別對這三個函式進行介紹 1.void malloc size t size malloc 在分配一段連續的記憶體...

C 動態記憶體分配

c 動態記憶體分配 c c 定義了4個記憶體區間 區,全域性變數與靜態變數區,區域性變數區即棧區,動態儲存區,即堆 heap 區或自由儲存區 free store 堆的概念 通常定義變數 或物件 編譯器在編譯時都可以根據該變數 或物件 的型別知道所需記憶體空間的大小,從而系統在適當的時候為他們分配確...