ptr = (char *)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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM