Re: [問題] HeapFree()出現中斷
※ 引述《wawi (兄弟霸業)》之銘言:
: 開發平台(Platform): (Ex: VC++, Gcc, Linux, ...)
: VC++
: 問題(Question):
: 程式執行至某個HeapFree()出現中斷
: 預期的正確結果(Expected Output):
: 在中斷之前結果都對的,理應直接結束程式,但卻在最後的HeapFree中斷
: http://tinyurl.com/4ncrcsm
: 因研究藍芽,目前找到這份程式碼
: 試著執行時卻發生問題
: 這份程式主要是用socket概念去做藍芽傳輸
: server mode時接到client端的資料時完全正確
: 但在最後(函式RunServerMode最後的)
: if ( NULL != lptstrThisComputerName )
: {
: HeapFree(GetProcessHeap(), 0, lptstrThisComputerName);
: lptstrThisComputerName = NULL;
: }
: 我個人認為是memory上的問題,但在HeapFree之前有些檢查過是否為NULL
: 所以目前想不透是為什麼
: 中斷出現的訊息為:
: Windows 已觸發 test.exe 內的中斷點。
: 可能是因為堆積損毀,表示 test.exe 內有錯誤或其載入的任何 DLL 內有錯誤。
: 也有可能是因為 test.exe 取得焦點時使用者按下 F12。
: 輸出視窗或許有較多的診斷資料。
: google到的也都是說free memory之前先檢查是否!NULL
: ps. 如果電腦沒藍芽裝置的話,該程式也不能跑
請使用GetLastError這個函數來取得錯誤狀況的資訊,
然後,請檢查GetProcessHeap()這個函數的回傳值,
如果GetProcessHeap函數的回傳值不等於NULL時,
請檢查lptsrtThisComputerName的配置空間是不是由HeapAlloc和HeapReAlloc這二個函數
所配置出來的...
ps.請善用Debugger工具和MSDN...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.64.95
→
01/12 15:27, , 1F
01/12 15:27, 1F
→
01/12 15:28, , 2F
01/12 15:28, 2F
→
01/12 15:28, , 3F
01/12 15:28, 3F
→
01/12 15:29, , 4F
01/12 15:29, 4F
→
01/12 15:34, , 5F
01/12 15:34, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):