这个读访问违反异常是由什么引起的?
What could this Read Access violation Exception be due to?
程序崩溃,出现对话框
"Unhandled exception at 0x3aaf1aea (pmsqlsrv.dll) in java.exe: 0xC0000005:
Access violation reading location 0x3ac60880."
显示导致崩溃的语句是
m_pDatabase->m_pIDBCreateCommand->CreateCommand();
在手表窗口,
"this" pointer value for the containing object is 0x7395fcaf
m_pDatabase is 0xffff8810 (does it look like a valid address?)
m_pDatabase->m_pIDBCreateCommand CXX0030: Error: expression cannot be evaluated
崩溃对话框中显示的地址- 0xC0000005和0x3ac60880我不知道它们是什么。这是否意味着dll (pmsqlsrv.dll)本身已损坏,并且崩溃是在读取代码段而不是在访问数据?
在32位Windows中,地址0xC0000000
及以上是为内核保留的。通常内核地址空间甚至从0x80000000
开始。所以这个地址看起来确实不健康
0xC0000005是内核的"段故障"中断异常处理程序的地址:当试图访问不属于您的进程的内存地址时,它被调用。
你的m_pDatabase
指向0xffff8810(非常奇怪的内存地址:指向静态数据区…初始化是否正确?)因为它很可能不是一个有效的地址,它包含一些无意义的值,使程序相信在m_pIDBCreateCommand
中有一些东西(可能是一个随机值),通过它可以获得函数要调用的地址。这使得它在经过两次或三次间接访问后,可以访问其进程边界之外的内存。
查看m_pDatabase在整个程序中是如何初始化、赋值和更改的。
相关文章:
- ifstream什么都没读
- C++从另一个类访问公共静态向量的正确方法是什么
- 在类 12.exe 中0x7B37FF80 (ucrtbased.dll) 引发异常: 0xC0000005:访问冲突读
- 两种访问I2C总线的方法有什么区别?
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 无法访问的代码 在 C++11 中,可能导致这种情况的原因是什么?
- 在C++中访问蓝图类组件的正确方法是什么?
- 访问提升:shared_ptr 主范围外崩溃,断言失败:px != 0.指针的正确用法是什么?
- 通过作为指向 C++ 函数的指针传递来访问 std::array 元素的正确方法是什么?
- reinterpret_cast,只读访问,简单的可复制类型,会出什么问题?
- 在只读(即 const)访问器上执行结构化绑定的最佳实践是什么?
- 错误访问 读入对象后
- 随机访问迭代器:我错过了什么?
- 如果基类指针无法访问派生类成员函数,那么多态性有什么方便的呢?
- 有什么快速访问内存的技巧吗
- 多读访问一个std::map,将导致不安全的行为
- c++ LinkedList读访问冲突错误
- 在Lua中跟踪变量以进行读访问,以启动用户定义的c++方法/函数
- c++ Vector读访问冲突Mylast返回0x8
- 这个读访问违反异常是由什么引起的?