【博客51】使用malloc(0)和malloc(-1)会怎么样?

内容: 今天测试下,malloc(0)和malloc(-1)在不同的环境下使用会怎么样对malloc(0)的使用,我在看书,书中提到能得到一个非空指针,但是对它free对出错。那么实际结果是怎么样的?看代码吧。

情况一:vs下测试malloc(0)
【博客51】使用malloc(0)和malloc(-1)会怎么样?
结果:此时测试出来p为不为空,而且对p使用free并不会出错。但是不能使用p,如果使用p来改写其指向的内存区域,则会出现错误。

情况二:vc下测试malloc(0)
【博客51】使用malloc(0)和malloc(-1)会怎么样?
结果:与vs保持一致

情况三:linux g++测试malloc(0)
【博客51】使用malloc(0)和malloc(-1)会怎么样?
结果:与vs保持一致

接下来测试了malloc(-1),我就不一一上图了,因为测试都是没有什么可视结果,那就容我直接跟各位报下情况吧哈哈。使用malloc(-1)在vs和vc下都会出错,程序卡死在那一行。相比之下,linux就不一样了,那这个我上图。

linux测试代码:
【博客51】使用malloc(0)和malloc(-1)会怎么样?
结果:根本编译不过!!
【博客51】使用malloc(0)和malloc(-1)会怎么样?

总结一下:
1.malloc(0)会返回一个非空指针
2.malloc(0)返回的指针,对其使用free不会出错
3.malloc(-1)在vs和vc下运行出错,程序卡死在malloc那一行,linux则编译报错。

感受: 有时候书里的知识不一定和实践完全匹配,我看程序员宝典的时候,说malloc(0)返回的指针,如果free则出错,实际测试并没有出错,今天在测试拷贝构造函数的形参如果去掉const的时候,哪些情况会出错,发现有的情况跟书不一样,有空我再补一篇。可见,书里的知识有时候不一定完成对,也许作书的当时是对的,还是实践出真知哈哈。

大三学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。