一、Access violation是什么意思
Access Violation常常在计算机用户运行的程序试图存取未被指定使用的存储区时遇到。比如:

“Access violation at address 00000000.Read of adress 00000000.意思是:在地址 00000000存取违反,禁止对地址00000000的读取。
或者用户在计算机运行.exe应用程序的时候,有时候程序运行不起来,遇到提示:“access violation at address xxxxxxxxx”。
Access Violation(非法访问)错误的防治方法
在启动或关闭Delphi IDE以及编译一个Delphi工程时容易出现设计期的Access Violation。在计算机运行中出现Access Violation信息可能由各种各样的原因引起,包括系统BIOS、操作系统或者是硬件驱动线,有些声卡、显卡、网卡实际上也会导致这种错误。
计算机里的每一块卡都有它的设备驱动程序。对于不同的制造商、不同版本的Windows或者不同版本的Delphi都可能会遇到不同的问题。如下有助于解决遇到的这些问题:
1、按照必要的步骤来证实安装的驱动程序之间没有冲突。
2、降低显示分辨率可能会使某些古怪的显卡驱动程序稳定一些。
3、如果使用双处理器的主板,则保证对每个处理器的修改步骤一样。
4、对于计算机上的所有硬件注意使用最新的驱动程序。
尽管Intel的计算机中Windows是最流行的操作系统,由于Windows系统天生的脆弱性和BUG,应用程序的误操作可能导致操作系统的迅速瘫痪。如下可以防止某些Access Violation的发生:
1、确保对于Windows NT/2000已经安装了最新的service pack。每次安装完新版的service pack,你会发现机器变得稳定了。
2、为你使用的各种版本的Delphi装上当前的更新或补丁(BDE、ADO……),这是提前预防错误的好办法。尽量使用最新的Delphi补丁——Access Violation错误数量尤其是设计期的错误数会大大减少。
二、c语言,出现了Access Violation怎么办啊。。。
1、strcpy的一般原型是char* strcpy(char*, const char*);,其中第一个参数是表示目的字符串第一个字符位置的指针。unsigned char ff='1', tt='2'后,ff值等于49,tt值等于50(具体等于多少可以自行查阅ASCII编码表),在strcpy(ff, tt)这个调用表达式中隐式转换,也就是相当于strcpy((char*)49,(const char*)50)。这么小的值作为一个指针一般表示不可访问的地址,所以触发了Windows的结构化异常导致access violation之类的一点都不奇怪。
2、另外,用C库函数strcpy应该包含string.h而不是string,后者是要用C++标准库的std::string之类的时候才需要包含。
3、 char ff[]="1";/*根据初始化列表决定数组大小,这里包含字符串结束符,数组ff大小是2字节。*/
4、 strcpy(ff,tt);/*因为ff空间不小于tt,所以不出现访问违例。*/
三、Access Violation怎么解决呢
Access Violation常常在计算机用户运行的程序试图存取未被指定使用的存储区时遇到。其含义为非法访问。
win7系统中,可设置数据执行保护例外程序有效避免该问题,步骤如下:
1、点击开始,点击运行,输入sysdm.cpl,点击确定;
2、点击高级选项卡,点击性能下设置按钮;
3、点击为除下列程序之外的所有程序和服务启用DEP,点击添加;
4、浏览选定要排除的程序,点击打开;
5、返回性能选项对话框,点击确定;
6、返回系统属性对话框,点击确定即可。
OK,本文到此结束,希望对大家有所帮助。









