0

ソース、エラー、スタック トレースを含めました。この問題を解決するにはどうすればよいですか? これについてどのように進めるかについての指針(説明)が必要です

ソースコード :

QFile xmlInputFile(".\\gatewayipmonitor.xml");  
xmlInputFile.open(QIODevice::ReadOnly);

QByteArray xmlData(xmlInputFile.readAll());

QDomDocument doc;
doc.setContent(xmlData);

QDomElement docEl(doc.documentElement());
const QString tagName(docEl.tagName());

docEl.text();

最後の行が実行されると、メッセージが表示されます

Windows は、tests.exe でブレークポイントをトリガーしました。

これは、ヒープの破損が原因である可能性があります。これは、tests.exe または読み込まれた DLL のバグを示しています。

これは、tests.exe にフォーカスがあるときにユーザーが F12 キーを押したことが原因である可能性もあります。

出力ウィンドウには、より多くの診断情報が表示される場合があります。"

[続行] をクリックすると、さらにメッセージが表示されます -

プログラム: ...n\tests\Release\tests.exe ファイル: f:\dd\vctools\crt_bld\self_x86\crt\dbgheap.c

式:_CrtIdValidHeapPointer(pUserData)

スタックトレース:

msvcr90d.dll!_free_dbg_nolock(void * pUserData=0x00a5f348, int nBlockUse=1)  Line 1317 + 0x30 bytes C++
msvcr90d.dll!_free_dbg(void * pUserData=0x00a5f348, int nBlockUse=1)  Line 1258 + 0xd bytes C++
msvcr90d.dll!free(void * pUserData=0x00a5f348)  Line 49 + 0xb bytes C++
QtCored4.dll!qFree(void * ptr=0x00a5f348)  Line 60 + 0xa bytes  C++
QtCored4.dll!QString::free(QString::Data * d=0x00a5f348)  Line 1185 + 0x9 bytes C++
QtCored4.dll!QString::~QString()  Line 883 + 0x23 bytes C++
tests.exe!test_GatewayIpMonitor()  Line 321 + 0xc bytes C++
tests.exe!main()  Line 343  C++
tests.exe!__tmainCRTStartup()  Line 586 + 0x17 bytes    C
4

2 に答える 2

1

私はリリースビルドでプログラムを実行していましたが、デバッグビルドライブラリ(Qtcored.lib)に対してリンクしています。それが問題でした。

于 2011-07-19T17:43:07.173 に答える
0

ヒープの破損ではありません。不正なqstringを削除しています。そのqstringインスタンスまたはポインター(ほとんどの場合)が実際に不良であったときにどのように使用されたかを調べます。

于 2011-07-19T16:41:18.100 に答える