1

ビジュアル C++ コンソール アプリに bonjour SDK を正常に実装しました。しかし、同じコードを Windows フォーム アプリ (ビジュアル C++) に実装しようとすると、おそらく bonjour dll のローカル ヒープの問題に関連する奇妙なエラーが発生します。

ファイル dbgheap.c の次のアサーションは失敗します。

/*
* If this ASSERT fails, a bad pointer has been passed in. It may be
* totally bogus, or it may have been allocated from another heap.
* The pointer MUST come from the 'local' heap.
*/
_ASSERTE(_CrtIsValidHeapPointer(pUserData));

この種の問題を扱っているリソースを誰かが知っていれば、本当に役に立ちます。

助けてくれてありがとう

4

1 に答える 1

0

あなたは私たちに多くの情報を提供してくれませんでしたが、探し始める1つの場所は次のとおりです。

別のヒープから割り当てられた可能性があります

Bonjour によって割り当てられたオブジェクトを解放していますか? bonjour.dll がリンクされている C ランタイム ライブラリはどれですか? フォーム アプリで同じもの (DLL または静的、マルチスレッドかどうか、デバッグまたはリリース) を使用していますか? コンソール アプリと同じものを使用していますか?

一般に、この種の理由で他の dll に割り当てられたメモリを解放するのは悪い考えです。BonjourFreeBonjour に割り当てられたオブジェクトの割り当てを解除するために呼び出すことができる関数はありませんか?

または、バッファをオーバーランして、Bonjour で個別にデバッグ メモリ割り当て境界を上書きしている可能性があります。障害が発生しているメモリを調べて、正しく見えるかどうかを確認してください。

于 2010-09-27T16:55:06.197 に答える