在加入FastReport 4.9.62 后,软件在退出时,弹出错误窗口
在加入FastReport 4.9.62 后,软件在退出时,偶尔出现错误窗口,点击确定后又弹出一个新的,要用任务管理器来终止。这个问题并不是每一台机器都出现。出现问题的机器也不是每一次退出都出现。
软件是用 BCB6 写的 使用了 XPMenu 3.1 、 Ehlib 、QReport3.62 控件,在加入FastReport 4.9.62之前一直正常没有问题。
出错时的截图请看这里:
http://pic.yupoo.com/csh9999/12290975a95a/4wtbl7xd.jpg
请问各位兄弟是否有这方面的经验? 是什么原因? 怎么解决?
[解决办法]
引起AV错误的原因实在太多了,象这种使用第三方控件引起的出错,更是不好找到原因.
你先试试在工程中只添加FastReport组件而不使用,看看是否还出错.
[解决办法]
单步到哪里出的问题?
Debug 和Rlease相切换编译去试试?
[解决办法]
看出错的提示应该不是FastReport的问题,多半是你的界面控件造成的
[解决办法]
一般为内存出错。。
[解决办法]
如果使用ADO,那肯定使用了COM,在WIndows系统中,COM使用得太普遍,很多控件内部都有使用,很多DLL做成COM部件来分发,以致于让人感觉不出在使用COM。
如果程序退出前,尚有使用到COM的类残留于内存中,很可能就会有AV出现。
也就是new的东西到程序退出前一定要全部delete掉,认为操作系统会帮你全部清场的想法是错误的。
按规范,CoInitialize();要一一对应 CoUninitialize(); 不要偷工减料。
至于指针越界,未初始化,使用已析构的内存...等内存问题,也是很难查的。
这些都是造成AV错误的常见地方,但编译都没办法帮你找错误,只能依靠经验及对项目的熟悉程度来逐一排查。内存错误在单元测试中,也是不能完全测试出来的。