VC++ 中的异常错误 c0000005

Posted

技术标签:

【中文标题】VC++ 中的异常错误 c0000005【英文标题】:Exception Error c0000005 in VC++ 【发布时间】:2013-06-14 16:10:16 【问题描述】:

正在开发 VC++ 控制台应用程序。

此应用程序从 Appdata\Roaming 文件夹发送文件一段时间。

发生的情况是出现此崩溃错误:

Problem signature:
Problem Event Name: APPCRASH
Application Name:   App.exe
Application Version:    1.0.0.2
Application Timestamp:  51c02fa8
Fault Module Name:  PCMeter.exe
Fault Module Version:   1.0.0.2
Fault Module Timestamp: 51c02fa8
Exception Code: c0000005
Exception Offset:   000069eb
OS Version: 6.1.7601.2.1.0.256.48
Locale ID:  1033
Additional Information 1:   0a9e
Additional Information 2:   0a9e372d3b4ad19135b953a78882e789
Additional Information 3:   0a9e
Additional Information 4:   0a9e372d3b4ad19135b953a78882e789

谁能帮我解决这个问题

【问题讨论】:

来吧;我们不是这个网站上的神。需要更多线索。 c0000005 是访问冲突的代码。您需要停止引用无效的内存来解决此问题。 谢谢,我正在使用 char txt[10000] 读取整个 xml 文件并将其传递给 CString 值以保存到服务器。这是否意味着内存违规? 如果 xml 文件大于 10,000 字节,并且您没有将复制到数组中的字节数限制为 10,000 - 那么是的,这将导致访问冲突。 【参考方案1】:

异常代码c0000005 是访问冲突代码。这意味着您的程序正在访问(读取或写入)它没有权限的内存地址。最常见的原因是:

访问过时的指针。那就是访问已经被释放的内存。请注意,这种陈旧的指针访问并不总是会导致访问冲突。只有当内存管理器已将内存返回给系统时,您才会遇到访问冲突。 读取数组的末尾。这是当您有一个长度为N 的数组并且您访问索引为>=N 的元素时。

要解决问题,您需要进行一些调试。如果您无法在开发机器上的调试器下发生故障,您应该获取故障转储文件并将其加载到调试器中。这将允许您查看代码中出现问题的位置,并有望引导您找到解决方案。您需要将调试符号与可执行文件关联起来才能看到有意义的堆栈跟踪。

【讨论】:

【参考方案2】:

我在为作业运行批量测试时遇到了同样的问题。结果是,当我将一些 iostream 操作(打印到控制台)从类构造函数重新定位到类中的方法时,它被解决了。

我认为这与构造函数中的 iostream 操作有关。

这里是修复:

// Before
CommandPrompt::CommandPrompt() : afs(nullptr), aff(nullptr) 
    cout << "Some text I was printing.." << endl;
;


// After
CommandPrompt::CommandPrompt() : afs(nullptr), aff(nullptr) 

;

请随时解释更多幕后错误是什么,因为它超出了我的 cpp 知识范围。

【讨论】:

以上是关于VC++ 中的异常错误 c0000005的主要内容,如果未能解决你的问题,请参考以下文章

C0000005: 读取位置 0xCCCCCCCC 时发生访问冲突

VC 程序崩溃异常处理集锦

vc++ 中未处理的异常 (msvcp100d.dll)

极品飞车16运行出错,求高手帮忙解决

运行时 Visual C++ 10 中的奇怪异常

深入探讨Java中的异常与错误处理