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 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些存 儲單元自動被釋放。棧...