關於動態記憶體申請的部落格

2021-08-19 11:31:34 字數 788 閱讀 4704

動態記憶體

malloc 動態申請記憶體

int *arr=(int*)malloc(n*sizeof(int))      //int arr[n]

定義乙個n長度的陣列;

如果要使用,需引用標頭檔案  

需注意:

1.棧的大小1m,可配;

2.堆的分配的最大連續塊1.2g

calloc動態申請記憶體,並將裡面的值置為0

int*arr=(int *)calloc(a,sizeof(int))

等同於:

int*arr=(int*)malloc(a*sizeof(int))

for(int i=0;i

relloc重新申請動態記憶體

比如我們第一次申請了a個格仔的動態記憶體,但是發現不夠用,我們需要申請2a個格仔的動態記憶體。

int*arr=(int *)relloc(arr,2*a*sizeof(int));

以上等同於

int*arr=(int *arr)malloc(a*sizeof(int));

int*brr=(int *arr)malloc(2*a*sizeof(int));

for(i=0;i

arr=brr;

brr=null;

會有記憶體洩漏問題

解決方法free

//free  釋放,解決記憶體洩漏

原因:1.越界,漏乘sizeof,relloc第二個引數寫錯

2.指標沒有指向首位址(改變位址指向)

3.重複釋放記憶體

4.釋放的不是動態申請的記憶體

關於動態記憶體申請的指標該如何釋放?

示例 include includechar tobin int num else flag 1 result 32 0 return result int main printf c n free a 該記憶體使用完後可以被釋放了,不然會一直占用記憶體 a null return 0 在我理解中,...

C語言動態記憶體申請分析

1 c語言中的一切操作都是基於記憶體的 2 變數和陣列都是記憶體的別名 1 記憶體分配由編譯器在編譯期間決定 2 定義陣列的時候必須指定陣列的長度 3 陣列的長度是在編譯期間就必須確定的 1 malloc和free用於執行動態記憶體分配和釋放 2 malloc所分配的是一塊連續的記憶體 3 mall...

指向指標的指標申請動態記憶體

在 高質量c程式設計指南 中,提到了如果函式的引數是乙個指標,那麼別指望它能申請動態記憶體。如下 include include void getmemory char p,int num int main void getmemory char p,int num 最後的輸出的stu的結果是0,即...