关闭

指针为NULL与空间malloc(0)的解释

标签: malloc0puts
5572人阅读 评论(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)就会产生异常报告(地址受损)。

 

NULL   一般预定义为   (void   *)0,指向0地址。malloc是在程序堆栈上分配空间,不会是0地址 

malloc(0)是指分配内存大小为零 
NULL是不指向任何实体 
malloc(0)也是一种存在不是NULL

1
0

  相关文章推荐
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:482733次
    • 积分:5665
    • 等级:
    • 排名:第4816名
    • 原创:97篇
    • 转载:31篇
    • 译文:0篇
    • 评论:57条
    博客专栏
    最新评论