malloc函数申请0字节的问题

    无意中看到这个问题。

    malloc函数若申请0字节,它返回的将会是什么?会不会仍然是NULL?

在c语言深度剖析上看到这样的解释:申请0字节的内存,函数并不返回NULL,而是返回一个正常的内存地址。但是你却无法使用这块大小为0的内存,将此比喻成尺子上的某个刻度,说刻度本身并没有长度,只有某两个刻度一起才能量出长度。这个时候判断语句:

     if(p == NULL)将不会起作用!

    本人在xcode上测试,确实如此,会得到一个有效的地址!但是并不像作者所说的该指针不可用,指针仍然可用!(不知道原因,mark下)

    然后本人又相继测试了用malloc分配一个负整数的字节时,如malloc(-1)等,返回的是NULL指针,不可用!但是若用负的浮点数时,如malloc(-2.5)等,则返回有效指针,且可用。

    这个问题本人不知道怎么解决!

    类似的还有:free(NULL),编译不会有问题,但这个语句做了什么?不知道!好比我们平时 malloc 一个指针 p,然后free(p),且令 p = NULL;然后再次 free(p),这会发生什么?不清楚


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值