ptr = (char *)malloc(0)
生活随笔
收集整理的這篇文章主要介紹了
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)就會產生異常報告(地址受損)。
例如:int pp=(strlen(ptr=(char*)malloc(0))) ,int pp=(sizeof(ptr=(char*)malloc(0)))都會輸出Got ?a ?null ?pointer。
注意:
(1)NULL一般預定義為(void *)0,指向0地址。
(2)malloc是在程序堆棧上分配空間,不會是0地址 。
(3)malloc(0)是指分配內存大小為零 ,NULL是不指向任何實體,malloc(0)也是一種存在不是NULL。
總結
以上是生活随笔為你收集整理的ptr = (char *)malloc(0)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C 关于unsigned int com
- 下一篇: #define与typedef的区别!