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 在記憶體...