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)相关推荐

  1. 【C】malloc(0)问题

    实际上malloc(0)这个语法是对的,也确实分配了内存,但内存空间是0,就是说返回指针是不能用的.malloc(0)的返回值可能是NULL也可能不是NULL,和实参为一个正整数时没什么区别.如果返回 ...

  2. malloc的内存分配之 malloc(0)的内存分配情况

    #include<iostream> using namespace std; int main() {char *p;if((p=(char *)malloc(0))==NULL)put ...

  3. c语言malloc返回值,malloc(0)的返回值

    很多嵌入式c面试,会问到这个问题,我也就百度了下,集合几位网友的分析,记录下来,便于我自己随时查看 当malloc分配内存时它除了分配我们指定SIZE的内存块,还会分配额外的内存来存储我们的内存块信息 ...

  4. char s[0] do{}while(0)

    为什么80%的码农都做不了架构师?>>>    http://www.newsmth.net mark: struct line { int len; char s[0]; }; s ...

  5. (char*)malloc(sizeof(char))有什么用,为什么要这么写——简单介绍指针

    计算最长字符串长度 输入n (n<10)个字符串,输出其中最长字符串的有效长度.要求自定义函数 Int max_len ( char *s[],int n),用于计算有n个元素的指针数组s中最长 ...

  6. C语言变长数组 struct中char data[0]的用法

    摘要:在实际的编程中,我们经常需要使用变长数组,但是C语言并不支持变长的数组.此时,我们可以使用结构体的方法实现C语言变长数组. struct MyData  {  int nLen;  char d ...

  7. char data[0]用法总结

    struct MyData {     int nLen;     char data[0]; };         开始没有理解红色部分的内容,上网搜索下,发现用处很大,记录下来.          ...

  8. char data[0]在struct末尾的用法

    在实际的编程中,我们经常需要使用变长数组,但是C语言并不支持变长的数组.此时,我们可以使用结构体的方法实现C语言变长数组. struct MyData { int nLen; char data[0] ...

  9. 面试官问:malloc(0)时程序会返回什么?

    今天跟大家找了篇文章,主要是一个面试中的有趣问题,其实有些问题在开发中没有遇到过会很难回答出来,如果在面试过程中回答正确,皆大欢喜,拿到offer的概率更大:回答不出来也不要信口开河,面试官主要看的是 ...

最新文章

  1. 从抵触到力推,.Net Core 的成功让微软正视开源
  2. Vue、React打包文件放在服务器,浏览器存在缓存问题的解决
  3. 【机器学习入门到精通系列】正则化解决过拟合问题(附Iris-L1 正则化代码)
  4. python查看图片的源代码_python获取图片元数据的代码
  5. 第16天学习Java的笔记(标准类,Scanner)
  6. 服务器上如何安装两个php网站,服务器安装两个php版本吗
  7. Java 在 CMD 环境下编译
  8. c语言中整形数据分为几进制,c语言中整型数据中的8进制以及16进制数据 – 手机爱问...
  9. 鸿蒙系统都有谁参与,华为鸿蒙系统功能有什么特别的-华为鸿蒙系统有什么新功能...
  10. 模型相关:SolidWorks创建Cube模型,在3DMax中给不同面添加不同颜色,导出自带纹理的FBX至Unity
  11. 干货 | 基于JMP的方差分析及两两比较的思路与实现
  12. 模具基础篇:直线度、平面度、圆度等这些形位公差你都了如指掌?
  13. python二元一次方程组用鸡兔同笼的思路来写编程_应用二元一次方程组——鸡兔同笼教学设计方案...
  14. android 触摸屏校准软件,触摸屏软件(eGalaxTouch)下载_触摸屏软件(eGalaxTouch)官方下载-太平洋下载中心...
  15. 虚拟机配置NAT网络后ping不通
  16. 中南大学计算机学院复试2021,34所自划线院校2021考研复试分数线-2021中南大学考研分数线已公布...
  17. 【PMP】PMBOK 笔记 第12章 项目采购管理
  18. 利用python实现m4a格式到MP3的转换
  19. 软件测试——佣金问题测试用例练习
  20. java(tm)6 update 45_Java(TM) 6 Update

热门文章

  1. 【算法笔记】B1044 火星数字
  2. javascript DOM 编程艺术 札记2 平稳退化
  3. APP多版本共存,服务端如何兼容?
  4. Git远程和分支管理
  5. stm32_CAN总线知识
  6. ajaxfileupload带多个参数上传方法
  7. 红黑树,看不懂你找我
  8. C程序多线程同时画圆画方
  9. Cloudstack介绍(一)
  10. Quartz教程三:Job与JobDetail介绍