私は Visual Studio の初心者で、VS 2010 C++ プロジェクトで Access Violation エラーが発生しています。アクセス違反エラーは、「free.c」Microsoft ファイルを指し示したり、プロジェクト コードの一部を指したりすることがあります。問題は、コードは私のものではありませんが、1 つまたは 2 つのコードを実装する必要があるということです。問題は、アクセス違反が発生しているコードの正確な部分を追跡する方法です。
誰かが興味を持っている場合: 私は 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()
- ..何とか何とかosg dllなどを呼び出しています..
その間、新しいスレッドを作成しようとしたときだけでなく、さらにいくつかのさまざまな状況 (ルート グループに何かを追加しようとしたときでも) で問題が発生することがわかったので、本当に必要なのは、アクセス違反の原因をキャッチすることです。