malloc()是C語言裡面動態宣告記憶體位置的函式
malloc()這個函式是在 stdlib.h 裡面提供的
其宣告的型態是
void *malloc( size_t size);
因為電腦不知道要如何用你借來的記憶體
所以型態是 void *
所以要使用的時候要轉成你要的型態
其需要一個參數:size
以下是他在C library的定義
Size of the memory block, in bytes.
意即其以BYTES(位元組)為單位
malloc會回傳兩種結果
- NULL,電腦沒有空間可以借你
- 不是NULL,回傳分配好的記憶體位置給你
則 a 為一個 m 大小的陣列
之後使用的方法就跟一般陣列一樣
那假如要宣告一個二維陣列呢?
(假設要宣告一個 m x n 的陣列)
要釋放記憶體的時候只需釋放 a 和 a[0] 即可
而要怎麼調整已宣告的記憶體的大小呢~?
就需要用到 realloc() 這個函式
其宣告的型態是
void * realloc ( void * ptr, size_t size );
ptr是指向之前已經宣告好的記憶體位置
ptr若是null,其功能就如同malloc()
size則是"調整之後的記憶體大小"
realloc()的做法是在新的位置宣告好記憶體位置後
把ptr裡的東西都複製到新的記憶體位置
然後回傳新的記憶體位置
realloc()的回傳有兩種情況
- NULL,則指向ptr的位置
- 非NULL,則指向新宣告的位置
以下為realloc的範例
(假設a為一個已經malloc好的陣列,m為想要宣告的大小)
a=(int*)realloc(a,sizeof(int)*m);
請先 登入 以發表留言。