//向記憶體申請10個整形的空間
//p中存放開闢空間的位址
int* p=(int*)malloc(10*sizeof(int));
//開闢失敗,記憶體不夠,返回空指標null
if(p==null)
庫函式宣告
void* malloc (size_t size);
簡單例子
#include#include#include#includeint main()
else
for(i=0;i<10;i++)
}//當動態申請的空間不再使用的時候
//就應該還給作業系統
free(p);//主動歸還空間,但p還是可以找到這塊空間,危險
p = null;
return 0;//程式結束,被動歸還空間
}
這個函式向記憶體申請一塊 連續可用 的空間,並返回指向這塊空間的指標。
如果開闢成功,則返回乙個指向開闢好空間的指標。
如果開闢失敗,則返回乙個null指標,因此malloc的返回值一定要做檢查。
返回值的型別是 void* ,所以malloc函式並不知道開闢空間的型別,具體在使用的時候使用者自己來決定
如果引數 size 為0,malloc的行為是標準是未定義的,取決於編譯器。
malloc和free都宣告在 stdlib.h 標頭檔案中
C語言補漏 void指標和NULL指標
在定義變數時,變數的型別決定占用的記憶體大小 直接定義無型別的變數,編譯器是不能他通過的。如下。void a 編譯器報錯 void指標我們稱之為通用指標,也就是可以指向任意型別的資料。也就是說,任何型別的指標都可以賦值給void指標。測試一下 include int main 執行結果 pv 000...
關於C程式中空指標 null指標 的設計哲學
c語言裡面的指標可以指向任何有效的資料,也可以 不指向任何東西 這後者即所謂的null指標。當指向有效資料的時候,對它使用 做dereference操 作就可以取出資料來了 但是對不指向任何資料的指標 來進行 操作肯定就沒什麼意義了,對吧?所以對不指 向任何資料的指標做提領其實是個bug。在現代的作...
C 空指標 NULL 與0的區別
空指標常量,ansi規定 規定預處理巨集null 為空指標常量,通常 define null 0或 void 0 誤區 有的機器不同型別的指標使用不同的內部表示,例如將字元指標的空指標常量定義為 define null char 0 這樣的null定義對於接受字元指標的函式沒有問題,但對於其他型別的...