当前位置: 代码迷 >> VC >> 0x00000000处未处理的错误 0xc0000005 读取位置0x00000000时发生访问冲突
  详细解决方案

0x00000000处未处理的错误 0xc0000005 读取位置0x00000000时发生访问冲突

热度:10869   发布时间:2013-02-25 00:00:00.0
0x00000000处未处理的异常 0xc0000005 读取位置0x00000000时发生访问冲突
我用VC.net 2003写了MFC程序,调试编译运行都没问题,就是在关闭调试中的程序的时候会出现“0x00000000处未处理的异常 0xc0000005 读取位置0x00000000时发生访问冲突”的错误提示。 
然后点击[中断],程序回到反汇编的地址显示: 
。。。 
。。。 
00000000 ??? 
00000001 ??? 
00000002 ??? 
00000003 ??? 
00000004 ??? 
00000005 ??? 
00000006 ??? 
00000007 ??? 
00000008 ??? 
00000009 ??? 
0000000A ??? 
0000000B ??? 
0000000C ??? 
。。。 
。。。 
我想问下这是什么错误呢,怎么修改,望高手赐教!谢谢!

------解决方案--------------------------------------------------------
up
------解决方案--------------------------------------------------------
估计是指针或者数组惹得祸,把代码拿出来看看
------解决方案--------------------------------------------------------
这个问题 我好像和别人解释过

这个是内存操作出界造成的

你用mfc就更有这个可能了 

问题的原因类似于如下:
char text[7];  //注意  7个字节
int a; // 4个字节

a = 9;

// 注意下面这个操作不会出错,但是你改变了a的值, 修改了a的一个字节,一般像这种变量是不会出现很大的错误,
// 但是如果a定义是这样 CWnd a; 或者是 CWnd* a// 这样就麻烦了 
memcpy(text, "12345678", 8); 
至于你的程序错在什么地方 你就得自己去调试了
------解决方案--------------------------------------------------------
该回复于2009-02-24 20:26:16被版主删除
------解决方案--------------------------------------------------------
LZ,
建议在可疑的类的析构 或者 Release之类的函数里卡断点 
确定错误代码位置
再联系上下文 
按上面你说那种内存错误 没人能帮你分析出来


------解决方案--------------------------------------------------------
估计是指针或者数组没弄好
------解决方案--------------------------------------------------------
设置断点调试
------解决方案--------------------------------------------------------
我也遇到这种错误了,就是死活不知道哪里出错了
------解决方案--------------------------------------------------------
你点中断?点重试试下,看能不能定位倒某个地方
------解决方案--------------------------------------------------------
这种问题很常见,在操作哪个函数时赋值不对就会出,内存访问冲突的问题太常见了,而原因也不一

没有代码 可以确定什么问题吗?

贴源码。
------解决方案--------------------------------------------------------
楼主的问题我遇到过,而且已经解决了。

具体方法是:

遇到类似的问题一般都是释放了没有分配内存的指针所导致的(我遇到的是这样的,不代表全部);
关闭系统时才出现这种问题,那么这个问题一般出现在析构函数中。

所以建议楼主看一下自己程序类的析构函数中是否存在上述问题指针!
------解决方案--------------------------------------------------------
我是来刷分的

------解决方案--------------------------------------------------------
....
------解决方案--------------------------------------------------------
JF........
楼上把我知道的都说了!!
------解决方案--------------------------------------------------------
我也遇到了 不好解决啊
------解决方案--------------------------------------------------------
这种问题一般都是内存溢出导致的,建议将你写的程序从头理一遍,在一些指针、数组之类的应用的地方着重看一下,设置断点跟踪程序走向,到报错的位置,一般都能再附近找到出错原因,耐心点就行了,这种错误别人只能告诉你怎么去纠错,但不能帮你找到错误位置们自己慢慢找就行了,记得解决问题给分啊
------解决方案--------------------------------------------------------
 cmdInfo.m_bRunAutomated)
{
// 經由 CoRegisterClassObject() 登錄類別因數。
COleTemplateServer::RegisterAll();
}
// 已使用 /Unregserver 或 /Unregister 參數啟動應用程式。
// 從登錄移除項目。
else if (cmdInfo.m_nShellCommand == CCommandLineInfo::AppUnregister)
{
COleObjectFactory::UpdateRegistryAll(FALSE);
AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor);
  相关解决方案