錯誤: 在 EVC4 調試模式下,出現錯誤。 錯誤提示: Error Access Violation 點擊確定后, EVC 停止在文件: D:/Program Files/Windows CE Tools/wce500/5300Pro /Mfc/Src/strcore.cpp 的函數: LPTSTR CString::GetBuffer(int nMinBufLength) 中的語句: if
錯誤:
在EVC4調試模式下,出現錯誤。
錯誤提示:Error Access Violation
點擊確定后,EVC停止在文件:D:/Program Files/Windows CE Tools/wce500/5300Pro /Mfc/Src/strcore.cpp 的函數:LPTSTR CString::GetBuffer(int nMinBufLength)中的語句:if (GetData()->nRefs > 1 || nMinBufLength > GetData()->nAllocLength) 。
解決問題:
1 出現錯誤的是一個CString 類型的數組,因為數組比較大,考慮到可能是應用的stack太小。但將stack的空間增大,問題仍然沒有解決;將數組的大小減小,同樣問題沒有解決。
2 詳細調試發現CString類在GetData時,指針m_pchData為空。原因不明!
3 考慮最近的修改,尋找可能引起此問題的原因。因為一天前,此應用還是可以正常運行的!
從穩定的版本到現在,只增加了一個數組和兩個宏定義。
原因肯定在這里,詳細閱讀代碼發現,宏定義使用錯誤。很簡單的錯誤:數組是用小的宏定義的,初始化時卻錯誤的寫成大的宏。
導致一個CString 數組變量的部分成員的空間被占用。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com