上午在调试自己写的一段代码的过程中,发现malloc函数分配内存失败,仔细梳理了一下自己写的代码,失败的malloc操作之前也malloc了两三次,但都是成功的,网上搜了一下,都提到失败的原因可能是因为之前申请的内存空间出现越界操作,致使malloc分配失败,自己得到了一些启示,回头查看了最近一次malloc申请内存成功后的一些操作,最后调试发现就是最近一次申请的内存空间不足,使用越界,最终导致现在的malloc无法申请内存空间。
总结一下:内存充足情况下malloc失败,很可能是由于指针越界,对未知的内存做了操作,致使malloc不能继续分配内存,解决办法就是查找最近一次malloc的地方,查看这次malloc申请的内存都做了什么,基本就是最近一次malloc申请的空间出问题了。