【问题标题】:Access violation at same program location同一程序位置的访问冲突
【发布时间】:2012-12-17 03:54:47
【问题描述】:

我收到错误:client.exe 中 0x77d815de 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000000。

我理解正常的访问冲突错误是什么意思,但是这个错误在位置 0x77d815de 不断重复,例如,我将删除程序中的代码行,它在位置 0x77d815de 处中断,不管那行是什么.我正在运行的代码是简单的 Windows API 代码,添加了一些 switch 语句(我尝试过删除)和类初始化(我也尝试过删除)。 您能否就至少为什么可能会出现溢出或解决此问题的方法给我一些建议。 感谢您的宝贵时间。

--

发现了,它是由两个 switch case 互锁引起的,编译器和我都察觉不到。从我的存储库中将其还原为旧形式,这很好。它导致 DirectX 设备类中的数据损坏,并搞砸了它的一些初始化,导致读取异常。

【问题讨论】:

  • 请出示代码
  • 没有看到任何代码就不能有任何建议。您需要显示代码。
  • 您的地址对我们来说毫无意义。好吧,除了 NULL 指针 (0x00000000)。
  • 0x77d815de 在 Google 上的前两个搜索结果指向这个问题。其余(约 16 个结果)为中文。
  • 访问冲突读取位置 0x00000000 正在尝试访问空指针。至少在涉及到可视化 c++ 运行时。您是否进行了正确的错误检查?

标签: c++ exception unhandled


【解决方案1】:

我通常在ntdll.dll 中看到这些地址。您可能向 WinAPI 提供了一些错误数据,并且由于您没有正确使用它而导致崩溃。

如果此时您闯入调试器,您应该会看到调用堆栈。您可以返回通过它,直到您到达您拨打电话的自己的代码。从那里,应该更容易找到问题。

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2015-08-15
    相关资源
    最近更新 更多