中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Delphi > 系统
什么是访问冲突(AccessViolations),如何排除该类错误
作者:Brune 时间:2001-10-29 10:35 出处:互联网 责编:chinaitpower
              摘要:什么是访问冲突(AccessViolations),如何排除该类错误

无论何时碰到的访问冲突都意味着你的程序试图访问不能再为你的程序所获得的内存。请注意我用了“不再(No Longer)“获得。在很多场合中遇到访问冲突都是因为试图引用已经释放的对象的指针或者尚未创建的对象的指针。

幸运的是,Win32的内存结构中,每个进程拥有独立的地址空间,因此我们不必担心覆盖其他程序的内存(这个在Win16种是经常遇到的问题)。这也说明了我们如今(actually)可以利用错误对话框中的信息。

当我们碰到访问冲突对话框时,都会有个地址(例如:Access violation at address:?????)。记下这个地址,返回到应用程序中,打开CPU窗口,在CPU窗口中右击鼠标选择Goto address。当对话框出现的时候,输入刚才访问冲突发生的地方,你就到了引起访问冲突的指令。

尽管CPU窗口中所有的都是用汇编语言写的,这并不对你很重要。如果你把滚动条向上滚一点,就可以看到你当前所处的函数。现在,你就知道是哪个函数引起了访问冲突。一旦你知道引起访问冲突的函数,就可以着手在这个函数中设立断点。

不幸的是,不是所有的事情都那么容易,指针错误有时候非常难查找,总的规则是当指针所指向的对象被释放的时候,把这些指针都设置为NULL,你也许还想在厌恶的函数中使用指针前检查它是否为NULL,如果为NULL你可以输出一些排错信息来帮助你查明哪个指针在程序运行时引起了访问错误。

作为最后的手段,你需要能够在那个指针处设立数据断点(data break point) 来检查它何时设为NULL

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有