1. 程式人生 > >指標為NULL與空間malloc(0)的解釋

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

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