私はこの問題に 2 日間取り組んでいますが、私はまだ C++ に慣れていないので気が狂いそうです。この違反アクセスの問題は、あなたにとって非常に簡単で、何千回も回答される可能性があります。しかし、C++ の知識が不足しているため、これまでに回答された同じ問題を特定することさえできません。
ここに私の問題があります:
1.主要なコードは DLL にあります。Visual Studio 2008 を使用しています
2.この DLL は、boost、tinyXML、および SRILM (NLP ツールキット) の 3 つの外部ライブラリを呼び出しました。
3.エラーは次のとおりです: Unhandled exception at 0x5f4f068f (TextNormalizerAPI.dll) in tester.exe: 0xC0000005: Access violation reading location 0x00000000.
、デバッグ モードでのみ発生しました。また、エラー行はpatUsername = regex("^\\W*@[A-Za-z]");
コード内の boost::regex オブジェクト ( ) の初期化によって発生しましたが、実際の位置は下の図に示すように、boost ライブラリの奥深くにありました。
**ほとんどの場合、Boost lib のソース コードを変更することは想定されていませんね。**
4.このエラーは、リリース バージョンではなく、デバッグ バージョンでのみ発生しました。
5.ソリューション全体を、デバッグ モードで正常に動作する古いが障害のないバージョンに置き換えます。しかし、このソリューションのリリース バージョンを生成した直後に、デバッグ モードでエラーが発生しました。
アップデート:
6.ありがとうございます!何かを試してみたところ、DLL のエントリの最初の行で正規表現オブジェクトを単純に定義しても、このエラーが発生することがわかりました。何か案は?
7.この dll の呼び出し元の main() の最初の行で正規表現オブジェクトを初期化しても、この問題は発生しません。
この説明が何かを思い出し、ヒントを与えるのに役立つことを願っています。
私は尋ねたい:
問題を絞り込んで特定するための通常の戦略は何ですか? ありがとう!