3 memset
4 realloc
void
*malloc
(unsigned
int num_bytes)
分配長度為num_bytes
個位元組的記憶體塊,返回值為無型別指標,該指標指向所分配記憶體塊的起始位置,因此利用該無型別指標賦值給其他型別的指標的時候,需要進行強制型別轉換。
int
*p =
(int*)
malloc
(sizeof
(int)*
20);
當記憶體分配失敗時,返回空指標null
。在使用malloc
分配記憶體之後,進行null
判斷是乙個良好的程式設計習慣。
void
*calloc
(unsigned
int num,
unsigned
int size)
在記憶體的動態儲存區分配num
個長度為size
的儲存塊,返回指向該儲存塊起始位址的無型別指標,若返回失敗,返回null
。因此,同樣需要對該函式返回值進行判斷。
int
*p =
(int*)
calloc(20
,sizeof
(int))
;
void
*memset
(void
*s,int ch,
unsigned
int size)
將s
所指向的記憶體塊的前size
個位元組全部設定為ch
對應的ascii
值。 它是對較大陣列或者結構體清零操作的最快方式。
memset(p, 0, 80);
void *realloc (void *p, unsigned int size);
如果已經通過malloc
或者calloc
獲得了動態空間,想改變其大小,可以使用realloc
函式重新分配,將p所指的動態空間大小改變為size
,而p
的值不變,如果重新分配不成功,返回null
。原來空間的內容會保留。 c語言動態記憶體分配 C 動態記憶體分配
動態記憶體分配 雖然通過陣列就可以對大量的資料和物件進行有效地管理,但是很多情況下,在程式執行之前,我們並不能確切地知道陣列中會有多少個元素。這種情況下,如果陣列宣告過大,就會造成浪費 宣告過小,就會影響處理。在c 中,動態記憶體分配技術可以保證程式在執行過程中按照需要申請適量記憶體,使用後釋放,從...
C語言總結 C語言動態記憶體分配
陣列的元素儲存與記憶體中連續的位置,當乙個陣列被宣告時,它所需要的內存在編譯時就被分配,但是我們也可以用動態記憶體分配在執行時為它分配記憶體。語言庫函式提供了兩個函式,malloc和free,分別用於執行動態記憶體分配和釋放。這些函式維護乙個可用的記憶體池。當程式設計師需要一些記憶體時,呼叫mall...
C語言動態記憶體分配
c語言動態記憶體分配 動態資料結構可以在執行時靈活新增 刪除或重排資料項。在執行時分配記憶體空間的過程稱為動態記憶體分配。記憶體分配函式如下 malloc 分配所需的位元組大小,並返回指向所分配空間的第乙個位元組的指標 calloc 為元素陣列分配空間,並初始化為零,然後返回指向該記憶體的指標 fr...