跟踪代码,发现时分配内存时出现这个错误。
void *ptr = MALLOC(size);
就是这行出错了。 size > 0
请问这是什么原因啊。
------解决方案--------------------------------------------------------
估计是内存用完了
可能你在其他地方频繁地使用内存、
------解决方案--------------------------------------------------------
简单的说,内存分配失败。是不是你其他地方申请了,不用的时候又不释放内存?
------解决方案--------------------------------------------------------
内存泄漏、无可用内存
------解决方案--------------------------------------------------------
如果返回NULL,可能因为内存用尽了(比如大量内存泄漏),可能因为BREW找不到一个足够大的堆节点。
如果程序崩掉,可能是其他地方出问题了,比如内存越界,破坏了BREW内部堆节点等等。
你说的“读取位置 0x61636970 时发生访问冲突”,可能是因为后者吧。
------解决方案--------------------------------------------------------
对,应该不是内存耗尽导致的,估计是内存越界了。
------解决方案--------------------------------------------------------
如果你的程序不大,可以先搜索在崩溃点之前是否执行了:MEMSET,MEMCPY,STRCPY等可疑函数。需注意每个调用处的dest buffer是否足够大,如果不够大,就可能会有内存越界发生。
------解决方案--------------------------------------------------------
TRACE32 断0x0 - 0x3地址。
估计你那个不是内存耗尽导致的, 因为内存耗尽只是分配失败, 不会崩溃的。 呵呵