C複習---動態內存分配

原型
extern void *malloc(unsigned int num_bytes);
頭文件
#include <stdlib.h>
#include <malloc.h>
函數聲明
void *malloc(size_t size);
備註:void* 表示未肯定類型的指針,void *能夠指向任何類型的數據,更明確的說是指申請內存空間時還不知道用戶是用這段空間來存儲什麼類型的數據(比
如是char仍是int或者其餘數據類型)。因此在使用時通常要作一下強制類型轉換。
功能
分配長度爲num_bytes字節的內存塊
返回值
若是分配成功則返回指向被分配內存的指針(此存儲區中的初始值不肯定),不然返回空指針NULL。當內存再也不使用時,應使用free()函數將內存塊釋放。函數返
回的指針必定要適當對齊,使其能夠用於任何數據對象。編程

函數名: free
功 能: 與malloc()函數配對使用,釋放malloc函數申請的動態內存。(另:對於free(p)這句語句,若是p 是NULL 指針,那麼free 對p 不管操做多少次都不
會出問題。若是p 不是NULL 指針,那麼free 對p連續操做兩次就會致使程序運行錯誤。)
用 法: void free(void *ptr);(ptr通常爲malloc所分配的空間地址)數組

NULL指針
NULL指針是一個無類型指針,而且值爲0。一個指針,擁有2個屬性--地址值和指針類型。二者的做用是:1,地址值標識變量的首地址(32位系統下指針的地址
值佔4字節);2,指針類型告訴編譯器,應該怎樣進行接下來的數據訪問(int型數組和float型數組是不一樣的;數組訪問與結構體訪問也是不一樣的;等等)。
NULL的出現是一種約定俗成,事實上它不是C語言中的關鍵字;把一個指針賦值爲NULL,一般的說法是「將指針懸空」。這樣,指針就沒法再進行任何數據訪問
了。編程工做中有一類比較容易犯的錯誤--指針地址未進行正確的更新賦值就加以使用,這每每會形成很嚴重的後果(對內存區進行錯誤的塗抹)。因此一個良
好的習慣是,當一個指針的工做稍事休息,先把它賦值爲NULL,待到再度使用時,從新對其賦值以及進行指針類型轉化;換句話說:若是將一個指針賦值爲NULL ,函數

則說明該指針不指向任何變量(也就是內存空間)。指針

字符「NULL」
在ASCII碼的第一個字符是NULL,它的數值是0,佔用1字節;C語言把它做爲字符串的最後一個字符,以表示字符串到此結束."\0"。對象

相關文章
相關標籤/搜索