unix下c程序偶尔分配内存失败是怎么回事
unix下c程序,加载了一个接口编码的动态库,在程序运行一段时间后,就出现动态库接口编码函数报错( 接口要命的是接口不打log)。而且夹杂着我们自己内部的内存数据库malloc就失败。但是程序还正常处理业务,处理完了调接口编码函数就报错。
但是以前这个接口函数一直用了2、3年了,出问题的可能性比较小。高手分析一下,这个跟主机内存有关系吗,是不是内存泄露。
------解决方案--------------------接口函数都用了2、3年了,说明函数本身应该是OK的,不会有内存泄漏;
很有可能的原因是在这个接口函数调用之前的代码中出现了内存越界操作,而导致malloc函数需要使用到的一些信息被破坏;
------解决方案--------------------内存碎片多了
------解决方案--------------------还是bug吧,除非硬件坏了.
------解决方案--------------------malloc 返回的错误码
valgrind 内存检测
------解决方案--------------------
跟进你的描述 很可能就是新业务导致了大量的内存碎片,检查下代码看看内存分配是否需要个管理器