欢迎来到Introzo百科
Introzo百科
在Win32调试版本中,什么会使VTable指针变为0xdddddddd?
|
我正在调试缺陷,并将其范围缩小到对象“ 0”的vtable指针。此答案表明Win32调试版本通常会将死内存或已删除的内存设置为此特殊值。
请注意,指针本身看起来是有效的,只是vtable指针为“ 0”。
这是一段代码:
std::list::const_iterator it;
for (it = myObjects.begin(); it != myObjects.end(); ++it)
{
IMyObject* pMyObject = *it;
if (pMyObject == 0)
continue;
pMyObject->someMethod(); // Access violation
}
如果我在访问冲突的行中断并观看pMyObject
,我可以看到pMyObject
本身具有有效地址(0x08ede388
),但是but6ѭ成员无效(0xdddddddd
)。
一些注意事项:
它是一个单线程应用程序,因此很可能不是竞争条件或互斥问题。
似乎没有任何明显的问题,例如在访问对象之前在调用堆栈中删除该对象。
此问题似乎只能在Windows 2008 Server上再现,而在Windows 7上则无法再现。
关于如何进一步调试的任何建议?
相关文章
- 10-06 Python Joblib库使用方法总结
- 10-06 Python标准类库
- 10-06 Java Maven 设置配置参考
- 10-05 戈多的场景树
- 10-05 戈多动画
- 10-05 在 Godot 中设计标题画面
- 10-05 信息搜索和可视化
- 10-05 设计流程与任务分析
- 10-05 颤动警报对话框
- 10-05 PostgreSQL远程连接配置管理/账号密码分配
- 10-05 Windows server 创建FTP 包括ft
- 10-05 Mongodb副本集加分片集群安全认证使用账号密码
- 10-05 浅谈ubuntu中执行.sh文件的几种方式的区别
- 10-05 Linux性能优化的实用思路和技巧(linux性能
- 10-05 如何轻松安装Linux系统显卡驱动(Linux安装
- 10-05 win10动态锁设置教程
- 10-05 win10关闭Win10右下角提示的教程
- 10-05 win10设置定时提醒闹钟方法
- 10-05 win10音频服务未运行 错误1068怎么办
- 10-05 win10哪里下载
- 最近发表