stdlib.h頭文件

1
預處理標識符 #
作用:編譯前執行的處理 ,就是將頭文件中的函數聲明及函數代碼完全拷貝到當前的程序代碼中

2
<stdlib.h>的函數
在這裏插入圖片描述

  • alloca() : 向棧申請內存,無需釋放
  • malloc() : 申請內存位於堆中,沒有初始化內存的內容,所以不能保證申請空間裏沒有內容
    語法:

malloc (申請元素的個數 * 元素單位長度)
eg : int p;
p = (int
)malloc(10*sizeof(int)); // 指針變量p,指向一個長度爲10的動態數組的首地址

  • calloc() : 初始化申請的內容,設爲 0
    語法 :

calloc (申請元素的個數,元素單位長度)
eg : int *P;
P = (int * ) calloc(10 , sizeof(int)) ;

  • realloc() : 對malloc() 申請內存進行調整大小
    語法 :

realloc(malloc申請空間的首地址 , 新長度)
eg : int * p;
p = (int*)malloc(10sizeof(int));
p = (int
)realloc(p,20*sizeof(int));

在堆上分配內存, 擴大內存空間,堆上現存空間足夠,原首地址不變 ; 內存空間不夠,重新申請一塊空間,將當前數據拷貝過去,釋放原來空間,重新賦予了新的首地址。

注 : 使用realloc() ,重新給舊地址的指針賦值

3
內存泄漏
從堆內存申請的內存最終要通過free()釋放,沒有的話,沒有被使用的內存,系統認爲還在使用,最終系統內存不斷減少。`就是不在用內存沒有釋放.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章