動態陣列構建與動態記憶體分配

2021-10-03 18:41:01 字數 1067 閱讀 4269

1.靜態陣列的長度必須事先指定,且陣列長度只能是長整數,不能是變數。

2.給靜態陣列分配的記憶體無法手動釋放,直到程式執行完畢,陣列占用的記憶體空間才會被系統釋放。

3.陣列長度一旦固定,其長度就不能再更改。

4.靜態陣列不能跨函式呼叫

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

因為通過動態記憶體分配構建動態陣列很好的解決了靜態陣列的4個缺點。

對記憶體的動態記憶體分配主要是通過系統提供的庫函式來實現的,主要有 malloc, calloc, free, realloc這4個函式。

例: 使用malloc函式

c語言**

#include

#include

//malloc函式標頭檔案

intmain

(void

)

devc執行結果

//動態構建一維陣列

#include

#include

intmain

(void

)

devc執行結果

例如:char *p,p是指向char型別的指標變數,佔1個位元組。

int *q,q是指向int型別的指標變數,佔4個位元組。

double *r,r是指向double型別的指標變數,佔8個位元組。

p,q,r所指向的變數所佔位元組數不同,但p,q,r本身所佔位元組數是相同的。

在32位系統中,乙個指標變數本身佔4個位元組,在64位系統中,乙個指標變數本身佔8個位元組

#include

intmain

(void

)

執行結果

陣列的動態記憶體分配

1.已知陣列的第二維進行動態記憶體分配 方式 利用陣列指標 include using namespace std intmain int argc,char ar delete p 釋放記憶體 return0 2.1已知陣列的第一維進行動態記憶體分配 方式 利用指標陣列 include using...

動態記憶體分配

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

動態記憶體分配

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