簡述C語言中的動態記憶體管理

2021-10-24 17:40:31 字數 980 閱讀 7118

目錄

為什麼要進行動態記憶體管理

動態記憶體開闢函式

malloc和free

calloc

realloc

常見的動態記憶體錯誤

普通常見的記憶體開闢的方法有:

int val = 10;//在棧空間上開闢四個位元組

char arr[10] = ;//在棧空間上開闢10個位元組的連續空間

但是上述方法有兩個不足之處:

有時候我們在開闢空間時,只有在程式執行的時候才能知道它需要的空間大小,此時上述的開闢空間的方法就無法滿足要求,這時候就需要用到動態開闢空間

c語言提供的 malloc 函式:

void* malloc (size_t size);
該函式向記憶體申請了一塊連續的空間,並返回指向這塊空間的指標。

c語言提供的 free 函式:

void free (void* ptr);
該函式用來釋放動態開闢的記憶體。

c語言中 calloc 函式也用來動態記憶體開闢

void* calloc (size_t num,size_t size);
realloc 函式動態開闢記憶體更加靈活

void* realloc (void* ptr,size_t size);
原有空間足夠大:要拓展的空間記憶體直接在原有記憶體之後直接追加,原來空間的資料不變

原有空間之後沒有足夠的空間:在堆空間上重新找到一塊合適的連續空間,將原有資料和要追加的資料一起搬移到到新開闢的空間上

void test()

void test()

void test()

c語言中的動態記憶體管理

malloc calloc realloc的區別與聯絡 在c語言 c 中和記憶體申請與釋放的相關函式有 alloc malloc calloc realloc free.1 alloc是在棧上申請空間,無需使用者主動釋放,當函式執行結束時,在棧上分配的記憶體會被自動釋放,棧記憶體分配運算內置於處理器...

c語言中的動態記憶體管理

malloc通常用來開闢一段連續記憶體空間 void malloc size t size 1 如果記憶體開闢成功,則返回乙個指向開闢好空間的指標 2 如果開闢失敗,則返回乙個null指標,因此malloc的返回結果必須判空 3 由於返回值型別為void 具體使用時根據自身需要強制型別轉換 4 如果...

C語言中動態記憶體管理方式。

c語言中關於動態記憶體管理的方式有三種,他們分別是malloc,calloc.realloc,雖然說他們都可以進行動態記憶體申請,但是他們之間還有一些相同之處,和不同之處。下面我們可以簡要的說明一下 三個函式的宣告分別是 void malloc size t size 1 函式malloc 在記憶體...