欢迎访问 生活随笔!

生活随笔

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

编程问答

ptr = (char *)malloc(0)

发布时间:2025/6/15 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。