+ -
当前位置:首页 → 问答吧 → malloc (0) 的问题

malloc (0) 的问题

时间:2010-08-12

来源:互联网

char *p = (char *)malloc(0);
可以返回一个有效地址没错,可是为什么这个可以正常使用? 它哪来的内存呢?? 我在linux下 测试居然能正常使用这个指针,而且是可以free的 。 请高手指点。。。。

作者: rent198708   发布时间: 2010-08-12

这涉及到malloc内的内存分配算法。通常malloc有个最小单元分配,也就是申请1个字节,可能要分配n字节给应用程序

作者: mirnshi   发布时间: 2010-08-12

回复 mirnshi
可是我给他赋值多个字节,他也能正常使用,。。。。。。这样一来直接malloc(0)就可以了,还不要算大小了。。。。。。。

作者: rent198708   发布时间: 2010-08-12



QUOTE:
回复  mirnshi
可是我给他赋值多个字节,他也能正常使用,。。。。。。这样一来直接malloc(0)就可以了,还 ...
rent198708 发表于 2010-08-12 16:51




呵呵,看你写入多少字节了。越界了就会触发保护机制了。你自己可以写个程序测试可以写入多少

作者: mirnshi   发布时间: 2010-08-12