C6011 取消對NULL指標「

2021-10-18 11:22:10 字數 768 閱讀 9546

//向記憶體申請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定義對於接受字元指標的函式沒有問題,但對於其他型別的...