2010-09-27 35 views
1

我已經成功在visual C++控制檯應用程序中實現了bonjour sdk。但是當我試圖在windows窗體應用程序(visual C++)中實現相同的代碼時,我正在接收可能與bonjour dll的一些本地堆問題有關的奇怪錯誤。在visual C++窗體應用程序中實現bonjour sdk

在文件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)); 

這將是真正有用的,如果有人知道的一些資源,處理這類問題。

非常感謝

回答

0

您還沒有非常多的信息提供給我們,但一個地方開始尋找是該位的任何幫助:

它可能已被從另一個堆

分配

你是否釋放Bonjour分配的對象?哪個C運行時庫與bonjour.dll鏈接?你是否在你的表單應用程序中使用了同一個(DLL或靜態,多線程或不是,調試或發佈)?你使用的是與你的控制檯應用程序相同的嗎?

一般來說,由於這種原因,釋放其他dll中分配的內存是一個壞主意。是不是有一個BonjourFree函數可以調用來取消分配在Bonjour中分配的對象?

或者,您可能會溢出一個緩衝區並在Bonjour上無條件覆蓋調試內存分配邊界。嘗試在失敗的空閒時查看內存,看看它看起來是否正確。

+0

是的,我使用相同的DLL。只要我從bonjour api dns_sd.h調用一個函數就會發生問題。有線的事情是這個代碼永遠不會被調用。斷言失敗發生在那之前。我認爲這個問題可能是c運行庫,但我現在不知道如何檢查或更改bonjour dll的鏈接。 – user459730 2010-09-27 17:11:15

相關問題