用vb撰寫的上位機,每次運行一天左右就報如下錯誤,不知道什么原因?
uj5u.com熱心網友回復:
檢查是否資源泄漏的辦法之一:在任務管理器 行程 查看 選擇列 里面選擇:記憶體使用、虛擬記憶體大小、句柄數、執行緒數、USER物件、GDI物件
讓你的程式(行程)不退出,回圈執行主流程很多遍,越多越好,比如1000000次甚至無限回圈,記錄以上各數值,再隔至少一小時,越長越好,比如一個月,再記錄以上各數值。如果以上兩組數值的差較大或隨時間流逝不斷增加,則鐵定有對應資源的資源泄漏!
uj5u.com熱心網友回復:
一般什么情況會造成資源泄露?uj5u.com熱心網友回復:
造成此錯誤的一種可能的直接原因是呼叫 API 時引數的資料型別不正確。仔細檢查一下。另一種可能是記憶體溢位。
第一種情況是設計上的問題,例如 Timer 時間中處理的事項所需時間大于 Timer 間隔等等。
第二種是代碼 Bug,例如反復實體化某種物件,但沒有釋放。
第三種是隱性的記憶體泄漏,有些與特定的 API 有關。這個要上網查,一般常見的都可以查到。看你用了哪些,有針對性地查。
uj5u.com熱心網友回復:
呼叫API的引數沒什么問題;記憶體溢位怎么檢查?
timer時間中處理事項所需的時間也不會大于timer的間隔。
反復實體化物件怎么才算釋放?可否舉個例子?
uj5u.com熱心網友回復:
十之八九是用錯了資料型別導致的記憶體溢位,建議你重點排查這方面uj5u.com熱心網友回復:
用錯資料型別?比如說?是類似比如應該是double但是用的single或byte這種錯誤么uj5u.com熱心網友回復:
推薦一個比較簡單的辦法:在上位機上安裝VB6開發環境
將你有問題的VB6源代碼拷貝過去
去掉或暫時注釋掉你VB6源代碼中類似On Error Resume Next的錯誤處理陳述句
在VB6 IDE中運行你的程式
在出錯時會彈出對話框提示,點擊相應按鈕進入除錯
游標即定位在你出錯的那一行上
此時可以在立即視窗中用"?變數名(回車)"命令查看你關心的變數的當前值。
uj5u.com熱心網友回復:
這個要具體代碼具體分析了,轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/127663.html
標籤:控件
下一篇:關于VB6.0中的無應答問題
