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

2021-09-21 06:12:30 字數 1303 閱讀 9737

malloc通常用來開闢一段連續記憶體空間

void

* malloc (size_t size)

(1)如果記憶體開闢成功,則返回乙個指向開闢好空間的指標

(2)如果開闢失敗,則返回乙個null指標,因此malloc的返回結果必須判空

(3)由於返回值型別為void*,具體使用時根據自身需要強制型別轉換

(4)如果引數size值為0,則malloc的行為未定義,取決於編譯器

c語言還提供了乙個函式free專門用來做動態記憶體的釋放與**

void free (

void

* ptr)

ptr為malloc的返回值

(1)calloc函式的功能為開闢num個大小為size的一塊空間,並把空間的每個位元組初始化為0。

(2)與malloc的區別在於calloc會在返回位址之前把申請空間的每個位元組初始化為0

int

* p =

calloc(10

,sizeof

(int))

;if(p !=

null

)free

(p);

//此時指標變成野指標

p ==

null

;return

0;

注意:

所有的記憶體申請都需要和free搭配使用,否則記憶體一直在動態申請而不及時釋放,會引起記憶體洩漏。

(1)realloc的存在使得c的動態記憶體管理變的更加靈活。

(2)realloc可以做到對動態開闢的記憶體大小進行調整

void

* realloc (

void

* ptr ,size_t size)

(3) ptr為待調整的記憶體位址

(4)size 為調整之後的新大小

(5)返回值為調整後的記憶體起始位置

(6)realloc函式還能夠在調整原空間大小的基礎上,將原來記憶體中的資料移動到新空間。

#include

intmain()

else

int* p =

null

; p=

realloc

(ptr,

1000);

if(p!=

null

)//業務處理

free

(ptr)

;return0;

}

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

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

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

目錄 為什麼要進行動態記憶體管理 動態記憶體開闢函式 malloc和free calloc realloc 常見的動態記憶體錯誤 普通常見的記憶體開闢的方法有 int val 10 在棧空間上開闢四個位元組 char arr 10 在棧空間上開闢10個位元組的連續空間但是上述方法有兩個不足之處 有時...

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

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