ptr = (char *)malloc(0)
生活随笔
收集整理的這篇文章主要介紹了
ptr = (char *)malloc(0)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
char ?*ptr;
if ((ptr = (char *)malloc(0)) == NULL) ?puts( "Got ??a ??null ??pointer ");?
else?puts( "Got ??a ??valid ??pointer ");?
上面程序在VC6.0下輸出結(jié)果是:Got a valid ?pointer
?
請問指針為NULL時(shí)指向哪里,分配的空間為0時(shí)又指向哪里?
當(dāng)使用malloc后,只有在沒有足夠內(nèi)存的情況下會返回NULL,或是出現(xiàn)異常報(bào)告。
?
malloc(0),系統(tǒng)就已經(jīng)幫你準(zhǔn)備好了堆中的使用起始地址(不會為NULL)。但是你不能對該地址進(jìn)行寫操作(不是不允許),如果寫了話,當(dāng)調(diào)用free(ptr)就會產(chǎn)生異常報(bào)告(地址受損)。
例如:int pp=(strlen(ptr=(char*)malloc(0))) ,int pp=(sizeof(ptr=(char*)malloc(0)))都會輸出Got ?a ?null ?pointer。
注意:
(1)NULL一般預(yù)定義為(void *)0,指向0地址。
(2)malloc是在程序堆棧上分配空間,不會是0地址 。
(3)malloc(0)是指分配內(nèi)存大小為零 ,NULL是不指向任何實(shí)體,malloc(0)也是一種存在不是NULL。
總結(jié)
以上是生活随笔為你收集整理的ptr = (char *)malloc(0)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C 关于unsigned int com
- 下一篇: #define与typedef的区别!