C語言之動態記憶體分配

2021-08-04 14:34:27 字數 935 閱讀 2447

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

1、malloc函式

函式原型為void * malloc(unsigned int size);

其作用是在記憶體的動態儲存區中分配乙個長度為size的連續空間。此函式是乙個指標型函式,返回的指標指向該分配域的開頭位置。

malloc(100);//開闢100位元組的臨時分配域,函式值為其第乙個位元組的位址

2、calloc函式

函式原型為void * calloc(unsigned n,unsigned size);

其作用是在記憶體的動態儲存區中分配n個長度為size的連續空間,這個空間一般比較大,足以儲存乙個陣列。

p=calloc(50,4);//開闢50x4個位元組的臨時分配域,把起始位址賦給指標變數p

3、free函式

函式原型為void free(void *p);

其作用是釋放指標變數p所指向的動態空間,函式無返回值。

4、realloc函式

函式原型為void * realloc(void *p,unsigned int size);

如果已經通過malloc函式或者calloc函式獲得了動態空間,想改變其大小,可以用realloc函式重新分配。

用realloc函式將p所指向的動態空間的大小改變為size,p的值不變,如果重分配不成功,返回null。

//建立動態陣列,輸入5個學生的成績,另外用乙個函式檢查其中有無低於60分的,輸出不合格的成績

#include

#include//動態記憶體標頭檔案

void check(int *p)}}

int main()

check(p1);

return

0;}

C語言之動態記憶體分配

準備 動態記憶體分配 一 為什麼用動態記憶體分配 但我們未學習鍊錶的時候,如果要儲存數量比較多的同型別或同結構的資料的時候,總是使用乙個陣列。比如說我們要儲存乙個班級學生的某科分數,總是定義乙個float型 存在0.5分 陣列 float score 30 但是,在使用陣列的時候,總有乙個問題困擾著...

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

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

C語言之動態記憶體分配與釋放

1,堆記憶體特點 堆記憶體可以存放任意型別的資料,但需要自己申請與釋放。2,堆大小 堆大小,想像中的無窮大,但實際使用中,受限於實際記憶體的大小和記憶體是否有連續性。1,malloc函式 2,calloc函式 3,realloc函式 4,free函式 示例 include include int m...