首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Brew >

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

2013-01-05 
0xC0000005: 读取位置 0x61636970 时发生访问冲突跟踪代码,发现时分配内存时出现这个错误。void *ptr MALL

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地址。
估计你那个不是内存耗尽导致的, 因为内存耗尽只是分配失败, 不会崩溃的。 呵呵

热点排行