我是靠谱客的博主 简单戒指,最近开发中收集的这篇文章主要介绍malloc失败的一个原因,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

         最近帮同学调一段程序,调试发现,程序其中的一个malloc函数返回值为空,我们知道如果申请分配的内存空间太大,系统无法获得符合要求的内存块,malloc函数会返回NULL,而这个程序中申请的空间是很小的,系统内存也很充裕,所以问题不在这儿。

         后来仔细推敲代码,发现程序中在返回值为NULL的malloc之前,有过若干次的malloc,然而对申请到的空间初始化的范围大小超过了前边malloc申请的大小,改正之后程序运行正常。

         应该是写越界,有可能覆盖到了下一个空闲块的头节点,从而破坏了 malloc管理的环形链表, malloc就无法从一个空闲块的指针字段找到下一个空闲块了。

        所以当遇到malloc失败时,可以检查一下,操作的内存空间大小是否超过了之前malloc申请的空间。

最后

以上就是简单戒指为你收集整理的malloc失败的一个原因的全部内容,希望文章能够帮你解决malloc失败的一个原因所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部