指標為NULL與空間malloc(0)的解釋

2022-09-19 05:57:09 字數 1139 閱讀 8171

char   *ptr;

if ((ptr   =   (char   *)malloc(0))   ==   null)   

puts( "got   a   null   pointer "); 

else 

puts( "got   a   valid   pointer "); 

上面程式在vc6.0下輸出結果是:got   a   valid   pointer 

請問指標為null時指向**,分配的空間為0時又指向**?

當使用malloc後,只有在沒有足夠記憶體的情況下會返回null,或是出現異常報告。 

malloc(0),系統就已經幫你準備好了堆中的使用起始位址(不會為null)。但是你不能對該位址進行寫操作(不是不允許),如果寫了話,當呼叫free(ptr)就會產生異常報告(位址受損)。

null   一般預定義為   (void   *)0,指向0位址。malloc是在程式堆疊上分配空間,不會是0位址 

malloc(0)是指分配記憶體大小為零 

null是不指向任何實體 

malloc(0)也是一種存在不是null

char   *ptr;

if ((ptr   =   (char   *)malloc(0))   ==   null)   

puts( "got   a   null   pointer "); 

else 

puts( "got   a   valid   pointer "); 

上面程式在vc6.0下輸出結果是:got   a   valid   pointer 

請問指標為null時指向**,分配的空間為0時又指向**?

當使用malloc後,只有在沒有足夠記憶體的情況下會返回null,或是出現異常報告。 

malloc(0),系統就已經幫你準備好了堆中的使用起始位址(不會為null)。但是你不能對該位址進行寫操作(不是不允許),如果寫了話,當呼叫free(ptr)就會產生異常報告(位址受損)。

null   一般預定義為   (void   *)0,指向0位址。malloc是在程式堆疊上分配空間,不會是0位址 

malloc(0)是指分配記憶體大小為零 

null是不指向任何實體 

malloc(0)也是一種存在不是null

野指標與 關鍵字 NULL

在c c 中的標準定義 ifdef cplusplus 條件編譯,判斷是c 還是c環境 define null 0 c 環境 else define null void 0 c語言環境 endif endif在c語言中的null就被替換成了 void 0 這個整體表示的是乙個指標,即是指向0位址的v...

物件指標為NULL,為什麼還是可以呼叫成員函式

b要理解這個的話。成員函式其實可以認為是乙個普通的函式,比如 1 2 3 4 class a 在編譯器看來,大概就長這個樣子吧 1 void a func a this,int x 注意此時y是成員變數,編譯器會自動給它加上this 也就是 1 void a func a this,int x 此時...

C 空指標 NULL 與0的區別

空指標常量,ansi規定 規定預處理巨集null 為空指標常量,通常 define null 0或 void 0 誤區 有的機器不同型別的指標使用不同的內部表示,例如將字元指標的空指標常量定義為 define null char 0 這樣的null定義對於接受字元指標的函式沒有問題,但對於其他型別的...