1

opencv と QT を使用してビデオ処理プロジェクトに取り組んでいます。すべてのコードは完璧に実行されますが、アプリケーションの GUI を閉じると、Windows 7 で停止したというエラーが表示されます。

Problem signature:
  Problem Event Name:   APPCRASH
  Application Name: QtTracker3.exe
  Application Version:  0.0.0.0
  Application Timestamp:    510a7ebe
  Fault Module Name:    ntdll.dll
  Fault Module Version: 6.1.7600.16695
  Fault Module Timestamp:   4cc7ab44
  Exception Code:   c0000005
  Exception Offset: 00052016
  OS Version:   6.1.7600.2.3.0.256.1
  Locale ID:    1033
  Additional Information 1: 0a9e
  Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
  Additional Information 3: 0a9e
  Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

そしてデバッガーは次を与えます:

Debugging starts
HEAP[QtTracker3.exe]: 
Heap block at 0BF96368 modified at 0BF96380 past requested size of 10
HEAP[QtTracker3.exe]: 
Invalid address specified to RtlFreeHeap( 00020000, 0BF96370 )
Debugging has finished

なぜこれが起こるのか理解できません...:-(

4

1 に答える 1

2

c0000005 はアクセス違反エラーです。一般的な理由は、(アプリケーションの終了時に発生したという情報に基づいて) 既に割り当て解除されたものに、無効なポインターを介してアクセスしようとする可能性があることです。

また、Qt でよくある間違いは、子ウィジェットをスタックに割り当てることです。親ウィジェットが最初に破棄された場合、子アドレス (ヒープに割り当てられておらず、エラーを引き起こす可能性のあるアドレス) で削除を呼び出しますが、基本的にはバグを見つけるためにプログラムをデバッグする必要があります。

于 2013-01-31T15:04:04.603 に答える