日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ptr = (char *)malloc(0)

發布時間:2025/6/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。