C 語言 動態記憶體管理

2021-09-28 22:25:43 字數 841 閱讀 4391

動態記憶體管理

標頭檔案 malloc.h 或者 stdlib.h;

malloc 介面 申請 free釋放

int arrary= (int*) malloc(nsizeof( int));malloc 的返回值 為 void;開闢失敗,返回null;

free(null 或者malloc 的返回指標)

free的操作注意點 : 不能部分釋放 ;申請多少,釋放多少,編譯可以通過,但執行一點出錯;free(null)永真;

2calloc 介面, 申請時並初始化0calloc(元素數量,每個元素的位元組數)

對已申請的記憶體做修改:擴充套件和縮小

擴充套件:原先內容仍舊保留,

縮小:去尾;

int* array1= realloc(array被運算元組,調整後的大小);

注意:realloc 函式的位址可能會變

因為:記憶體(堆)不夠大時,編譯器就會去尋找 合適 的記憶體大小的地方 去開闢;所以位址可能 會改變;

若是改變,原來的指標(申請的記憶體塊)將被realloc介面釋放掉;被釋放的空間不能重複釋放;

在這裡 我們發現棧是向下生長的(棧頂是高位址);堆是向上生長的

注意 :動態分配記憶體是在堆上進行的

alloc 函式是在棧上動態申請空間的, afree()函式釋放空間的

,不同的是, afree得先來,alloc後來。

C語言動態記憶體管理

1 概述 動態儲存管理的基本問題是 系統如何按請求分配記憶體,如何 記憶體再利用。提出請求的使用者可能是系統的乙個作業,也可能是程式中的乙個變數。空閒塊 未曾分配的位址連續的記憶體區稱為 空閒塊 占用塊 已分配給使用者使用的位址連續的記憶體區稱為 占用塊 系統剛剛啟動時,整個記憶體可看做乙個大的 空...

C語言動態記憶體管理

c系統的函式庫中提供了了程式動態申請和釋放記憶體儲存塊的庫函式,下面將分別介紹。1 malloc 函式 a 該函式的原型 void malloc size t size b 該函式只有乙個引數,且形參size是無符號整型,該引數代表申請空間的位元組數。c 返回值 如果記憶體池中的可用記憶體滿足需求,...

C語言動態記憶體管理

在說明c語言記憶體管理之前,要知道什麼是記憶體,記憶體我個人認為可以理解為帶有標籤的盒子,所謂的帶標籤的盒子就像我們住的寢室一樣有門牌號,盒子內只能儲存固定型別的資料或變數,就如男生寢室只能住男生一樣。那麼c語言中有多少種盒子呢?有靜態儲存區 動態儲存區 內部暫存器區域。我們通常定義的變數如果沒有特...