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

posted @ 2022-02-11 00:41  ustone  阅读(2381)  评论(1编辑  收藏  举报