19

我正在开发 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

谁能帮我解决这个问题

4

2 回答 2

51

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

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

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

于 2013-06-18T12:56:43.830 回答
-1

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

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

这是修复:

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


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

};

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

于 2021-01-01T07:37:30.780 回答