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
