C語言筆記 分配記憶體,malloc與陣列

2021-10-11 16:34:29 字數 1156 閱讀 6187

1.malloc()

double

* ptd;

ptd =

(double*)

malloc

(n *

sizeof

(double))

;//可使用ptd[i]來訪問第i個元素,i

用malloc()建立二維陣列:

int p (*)

[m];

//p2指向乙個內含m個某型別值的陣列,p2[i]代表乙個由m個此型別數構成的元素

p =(

int(*)

[m])

malloc

(n * m *

sizeof

(int))

;//n*m陣列

2.free()
free

(ptd)

;

free()所用的指標變數可以與malloc()的指標變數不同,但兩個指標必須儲存相同的位址,不能釋放同一塊記憶體兩次。

3.exit()

判斷記憶體是否分配失敗,返回值為1.

返回值:exit_failure:普通的程式結束;

exit_success:程式異常終止。例如:

exit

(exit_failure)

;

4.calloc()

同malloc(),且把塊中的所有位設定為0,例如:

long

* newmem;

newmem =

(long*)

calloc

(100

,sizeof

(long))

;

第乙個引數為所需的儲存單元數量,第二個引數是儲存單元的大小。

5.儲存類別和動態記憶體分配

程式記憶體分為靜態儲存,自動儲存和動態分配。

靜態儲存類別的變數在程式開始時建立,結束時被銷毀;

自動儲存類別的變數在進入變數定義所在塊時存在,離開塊時銷毀;

動態分配的內存在呼叫malloc()或相關函式時存在,呼叫free()後銷毀。

malloc記憶體分配原理

一 malloc的工作機制 它有乙個將可用的記憶體塊連線為乙個長長的列表的所謂空閒鍊錶。呼叫malloc函式時,它沿連線表尋找乙個大到足以滿足使用者請求所需要的記憶體塊。然後,將該記憶體塊一分為二 一塊的大小與使用者請求的大小相等,另一塊的大小就是剩下的位元組 接下來,將分配給使用者的那塊記憶體傳給...

malloc記憶體分配原理

一 malloc的工作機制 它有乙個將可用的記憶體塊連線為乙個長長的列表的所謂空閒鍊錶。呼叫malloc函式時,它沿連線表尋找乙個大到足以滿足使用者請求所需要的記憶體塊。然後,將該記憶體塊一分為二 一塊的大小與使用者請求的大小相等,另一塊的大小就是剩下的位元組 接下來,將分配給使用者的那塊記憶體傳給...

C 記憶體 new與malloc分配記憶體區別

一關於記憶體 1 記憶體分配方式 記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在 例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些存 儲單元自動被釋放。棧...