malloc函数申请0字节的问题
⽆意中看到这个问题。
malloc函数若申请0字节,它返回的将会是什么?会不会仍然是NULL?
在c语⾔深度剖析上看到这样的解释:申请0字节的内存,函数并不返回NULL,⽽是返回⼀个正常的内存地址。但是你却⽆法使⽤这块⼤⼩为0的内存,将此⽐喻成尺⼦上的某个刻度,说刻度本⾝并没有长度,只有某两个刻度⼀起才能量出长度。这个时候判断语句:
if(p == NULL)将不会起作⽤!
molloc函数本⼈在xcode上测试,确实如此,会得到⼀个有效的地址!但是并不像作者所说的该指针不可⽤,指针仍然可⽤!(不知道原因,mark下)
然后本⼈⼜相继测试了⽤malloc分配⼀个负整数的字节时,如malloc(-1)等,返回的是NULL 指针,不可⽤!但是若⽤负的浮点数时,如malloc(-2.5)等,则返回有效指针,且可⽤。
这个问题本⼈不知道怎么解决!
类似的还有:free(NULL),编译不会有问题,但这个语句做了什么?不知道!好⽐我们平时malloc ⼀个指针 p,然后free(p),且令 p = NULL;然后再次 free(p),这会发⽣什么?不清楚

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。