欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

0xc0000005: 读取位置 0x61636970 时发作访问冲突

更新时间: 2014-01-05 02:45:22 责任编辑: Author_N1

 

0xC0000005: 读取位置 0x61636970 时发生访问冲突
跟踪代码,发现时分配内存时出现这个错误。
void *ptr =  MALLOC(size);
就是这行出错了。 size > 0

请问这是什么原因啊。 
--参考方法--
估计是内存用完了 
可能你在其他地方频繁地使用内存、
--参考方法--
简单的说,内存分配失败。是不是你其他地方申请了,不用的时候又不释放内存?
--参考方法--
内存泄漏、无可用内存
--参考方法--
如果返回NULL,可能因为内存用尽了(比如大量内存泄漏),可能因为BREW找不到一个足够大的堆节点。
如果程序崩掉,可能是其他地方出问题了,比如内存越界,破坏了BREW内部堆节点等等。
你说的“读取位置 0x61636970 时发生访问冲突”,可能是因为后者吧。

--参考方法--
引用:
如果返回NULL,可能因为内存用尽了(比如大量内存泄漏),可能因为BREW找不到一个足够大的堆节点。
如果程序崩掉,可能是其他地方出问题了,比如内存越界,破坏了BREW内部堆节点等等。
你说的“读取位置 0x61636970 时发生访问冲突”,可能是因为后者吧。

对,应该不是内存耗尽导致的,估计是内存越界了。
--参考方法--
引用:
内存越界要怎么查找比较容易找到问题点呢。
现在跟踪代码,都是在MALLOC这里程序崩掉呢。

如果你的程序不大,可以先搜索在崩溃点之前是否执行了:MEMSET,MEMCPY,STRCPY等可疑函数。需注意每个调用处的dest buffer是否足够大,如果不够大,就可能会有内存越界发生。
--参考方法--
TRACE32 断0x0 - 0x3地址。
估计你那个不是内存耗尽导致的, 因为内存耗尽只是分配失败, 不会崩溃的。 呵呵
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:45:22
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13958/
本文WWW.DOC100.NET DOC100.NET版权所有。