C++ Builder程序運行出現Access Violation錯誤的常見原因


程序運行access violation出錯很經常的一個原因是指針未初始化,比如一個對象還沒有new創建出來或者已經釋放(內存被別的占用),卻通過指針訪問對象的成員函數(vcl對象的屬性其實內部也是調用了成員函數)。

另一種常見情況是一個對象二次delete,比如刪除一個vcl的父控件(如容器控件Panel或者Form窗體),它會自動銷毀所有的子控件,然后你又去刪除一個子控件,二次刪除造成access violation。這種情況如果一定要手動delete,可以先delete子控件后父控件。

還有,數組訪問越界也可能會出現access violation錯誤。

設計期放置在窗體上的控件,程序運行時會自動創建及銷毀,不需要用代碼手動new和delete。不同於運行時用代碼動態創建的控件。

【DelphiGuy】查看程序運行時候的內存分配及釋放情況,可以啟用code guard,Tools->Code Guard Configuration,enable,然后save all,build,運行。

C++Builder(BCB)學習群(QQ)
https://www.cnblogs.com/ustone/p/16855586.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM