C++ 在 VS 2010 中调试访问冲突

标签 c++ visual-studio-2010 debugging access-violation

我是 Visual Studio 的新手,我在 VS 2010 C++ 项目中遇到访问冲突错误。访问冲突错误有时将我指向“free.c”微软文件,有时指向项目代码片段。问题是,代码不是我的,但我必须在其中实现一两件事。 所以问题是:如何跟踪访问冲突根源所在的确切代码段?

只要有人感兴趣:我正在使用 OSG 和 Qt,尝试创建新线程以在后台运行 OSG 渲染。在简单的示例中(仅 3d 模型 + qt 按钮)一切正常,但是当我尝试将 Qt 按钮实现到项目中时,它不断给我访问冲突

感谢您的宝贵时间!

编辑:

  • 这是黄色箭头指向的地方 ntdll.dll!77972c39()
  • [下面的框架可能不正确和/或缺失,没有为 ntdll.dll 加载符号]
  • kernel32.dll!7776c3d4()
  • 这是绿色箭头指向的地方 msvcr100.dll!free(void * pBlock) 第 51 行 C
  • osg75-osg.dll!52f245f1()
  • osg75-osg.dll!52f2785e()
  • osg75-osgQtd.dll!osgQt::QGraphicsViewAdapter::assignImage(unsigned int i) 565 行 + 0x59 字节 C++
  • osg75-osgQtd.dll!osgQt::QGraphicsViewAdapter::setFrameLastRendered(const osg::FrameStamp * frameStamp) 第 477 行 C++
  • osg75-osgQtd.dll!osgQt::QWidgetImage::setFrameLastRendered(const osg::FrameStamp * frameStamp) 第 54 行 C++
  • osg75-osgViewer.dll!545b5a2e()
  • osg75-osgUtil.dll!52c8b6a3()
  • msvcr100.dll!malloc(unsigned int size) 第 89 行 + 0x3b 字节 C
  • msvcr100.dll!operator new(unsigned int size) 第 59 行 + 0x8 字节 C++
  • osg75-osg.dll!52eac085()
  • ..blah blah 调用 osg dll 和东西..

同时发现问题不仅出现在我尝试创建新线程时,而且出现在其他几种不同的情况下(甚至当我尝试向根组添加一些内容时),所以我真正需要的是找出导致访问冲突的原因

最佳答案

Is there a chance you are mixing Debug and Release in the same application? Remember it is not generally safe to use Release dlls in a Debug application or Debug dlls in a release application since the Visual Studio release and debug heaps are incompatible.

这就是解决方案,感谢 Drescherjm。

关于C++ 在 VS 2010 中调试访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12470450/

相关文章:

.net - VIsual Studio 2010 显示 aspx 文件的 .vb 和 .designer.vb 文件

c - GDB 说 "no symbol table,"但 nm 显示文件有调试符号

c++ - 我的 Visual C++ 程序可以监听它自己的调试输出吗?

c++ - C++ 中的组合模式,是否有首选方法?

c# - 从 C++ 到 C# 的数组

c++ - 将 vector<class> myvector 传递给构造函数并访问它

visual-studio-2010 - 打开 WCF 托管的 svc 文件

visual-studio-2010 - 添加指向与 GAC 不同版本的引用

c++ - 运行时库只是一些动态链接的库文件吗?

java - 如何分析由忽略的 ExceptionInInitializerError 引起的 NoClassDefFoundError?