動態建立記憶體

2021-08-21 18:43:08 字數 684 閱讀 5467

1、malloc是動態記憶體最基本的用法一般形式為:

int *p=(int*)malloc(n*sizeof(int));
2、realloc是擴大申請的記憶體

int *p=(int*)realloc(p,n*sizeof(int));
其中n 為申請的記憶體新的大小

//realloc

int main()

p = (int *)realloc(p,20*sizeof(int));

printf("%d\n",p);

//下面等同realloc

/* int *q = (int *)malloc(20*sizeof(int));

for(int i=0;i<10;i++)

free(p);

p = q;

q = null;*/

free(p);

return 0;

}

上述過程中,當申請的10個記憶體不夠用時,利用realloc再申請10個,此時表示式中n=20;

3、calloc

calloc是將分配記憶體中的乙個陣列元素初始化為0。

int *p=(int*)calloc(n*sizeof(int));

動態記憶體建立與釋放

使用時應加上標頭檔案 include 一.申請動態記憶體 申請動態記憶體 malloc calloc realloc,申請的動態記憶體分為多少份此函式無法明確,所以應在malloc calloc realloc前面加上型別 1.malloc malloc函式的形參為所要申請的動態記憶體位元組數 動態...

動態申請記憶體

如果函式的引數是乙個指標,不要指望用該指標去申請動態記憶體。示例1中,test函式的語句getmemory str,100 並沒有使str獲得期望的記憶體,str依舊是null,為什麼?void getmemory char p,int num void test void 示例1 試圖用指標引數申...

記憶體動態管理

記憶體動態管理 主要是指對 堆 記憶體或者自由記憶體的管理和使用 在c語言中使用malloc 和free 動態分配和釋放儲存單元。malloc 以空間大小作為引數,不知道資料具體型別,因此分配空間後範圍的位址指標void 無法指向具體的資料,必須進行強制轉換後才可以指向具體型別資料。c 提供了使用簡...