malloc函数分配内存失败的常见原因

Posted bewolf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了malloc函数分配内存失败的常见原因相关的知识,希望对你有一定的参考价值。

malloc()函数分配内存失败的常见原因: 
1. 内存不足。 
2. 在前面的程序中出现了内存的越界访问,导致malloc()分配函数所涉及的一些信息被破坏。下次再使用malloc()函数申请内存就会失败,返回空指针NULL(0)。


malloc中做了哪些事情: 

简单的说就是系统中有一个位置标记,标记了 当前已经用掉的内存用到了什么位置,系统中还有一个链表把各个未用的内存块连接起来,申请新内存的时候就未分配的链表中依次查找一个够用的内存块,把这次分配的内存地址返回给用户,把这次用掉的进行映射,未分配的部分返回给链表,如果没有合适大小的内存,还需要先进行内存整理合并。

详细情况看到这个博客写的不错:https://blog.csdn.net/mmshixing/article/details/51679571


查看方式:

1、内存不足,使用free命令查看当前还有多少内存,看是否合理,之前是否有内存泄漏等。

2、按照流程查看malloc失败前的几次malloc、memcpy或字符串拷贝等,查看是否有内存越界。

以上是关于malloc函数分配内存失败的常见原因的主要内容,如果未能解决你的问题,请参考以下文章

内存动态分配与释放

c语言内存分配-malloc

malloc和free函数 详细解释

16 malloc 虚拟内存分配的调试

new/malloc的差别

C语言malloc动态分配内存分配失败怎么办?exit(OVERFLOW);(include <cstdlib>)