概述
最近帮同学调一段程序,调试发现,程序其中的一个malloc函数返回值为空,我们知道如果申请分配的内存空间太大,系统无法获得符合要求的内存块,malloc函数会返回NULL,而这个程序中申请的空间是很小的,系统内存也很充裕,所以问题不在这儿。
后来仔细推敲代码,发现程序中在返回值为NULL的malloc之前,有过若干次的malloc,然而对申请到的空间初始化的范围大小超过了前边malloc申请的大小,改正之后程序运行正常。
应该是写越界,有可能覆盖到了下一个空闲块的头节点,从而破坏了 malloc管理的环形链表, malloc就无法从一个空闲块的指针字段找到下一个空闲块了。
所以当遇到malloc失败时,可以检查一下,操作的内存空间大小是否超过了之前malloc申请的空间。
最后
以上就是简单戒指为你收集整理的malloc失败的一个原因的全部内容,希望文章能够帮你解决malloc失败的一个原因所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复