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错误数量尤其是设计期的错误数会大大减少。
Access Violation(非法访问)。
比如:“Access violation at address 00000000.Read of adress 00000000.意思是:在地址 00000000 存取违反,禁止对地址00000000的读取。
其他的情况还有,General Protection Fault(一般保护性错误)或者Invalid Page Fault(无效页面错误),虽然说法不一样,但本质上总是由同一种错误引起的;Access Violation常常在计算机用户运行的程序试图存取未被指定使用的存储区时遇到。
扩展资料:
Access Violation出现在当程序企图访问CPU无法定址的存储器区块时。当错误发生时,硬件会通知操作系统产生了存储器访问权限冲突的状况。
操作系统通常会产生核心转储文件(core dump)以方便程序员进行除错。通常该错误是由于调用一个地址,而该地址为空(NULL)所造成的,例如链表中调用一个未分配地址的空链表单元的元素。数组访问越界也可能产生这个错误。
段寄存器除了有16位的可见部分,还有不可见的隐藏部分,称为描述符缓存“descriptorcache”或隐藏寄存器“shadow register”。当一个段选择符(segment selector)装入段寄存器的可见部分,处理器同时也把该段描述符的其它数据装入到段寄存器的隐藏部分,这包括段开始的基地址、段长度、访问控制信息等。
这些信息缓存到段寄存器中,避免了处理器在转址(translate address)时花费额外的总线周期从段选择符表中读入数据。处理器指令中可以明示使用哪些段寄存器,这将替换掉默认使用的段寄存器。
参考资料:百度百科_存储器区段错误
Access Violation,意思为“非法访问”。Access Violation常常在计算机用户运行的程序试图存取未被指定使用的存储区时遇到。
用户在计算机运行.exe应用程序的时候,有时候程序运行不起来,却遇到提示:“access violation at address xxxxxxxxx ”。
或者类似于这样格式的提示:
Access violation at address <十六进制值>in module <应用程序名>Read of address <十六进制值>
又比如一下这个具体的提示:
“Access violation at address 00000000.Read of adress 00000000.
意思是:在地址 00000000 存取违反,禁止对地址00000000的读取。
扩展资料:
出现类似这样提示的原因是:
没有运行服务端软件,而开启服务端程序或检查网线即可解决。
另外,可能出现这个问题的原因是因为你是在WINRAR的窗口中运行程序,而程序又找不到主要文件引起的。
还有可能是在代码中出现一些错误:
除以零
数组越界:int a[3]; a[10000000]=10
指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10
使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10
数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000]
Access Violation(非法访问),General Protection Fault(一般保护性错误)或者Invalid Page Fault(无效页面错误),虽然说法不一样,但本质上总是由同一种错误引起的。Access Violation常常在计算机用户运行的程序试图存取未被指定使用的存储区时遇到。
Access violation at address <十六进制值>
in module <应用程序名>
Read of address <十六进制值>
“Access violation at address 00000000.Read of adress 00000000.意思是:在地址 00000000 存取违反,禁止对地址00000000的读取
出现access violation at address 00000000. read of address 00000000.原因是:没有运行服务端软件,所以客户机会提示"Access violation at address 00000000, read of address 0000000",开启服务端程序或检查网线即可解决。
另外,可能出现这个问题的原因是因为你是在WINRAR的窗口中运行程序,而程序又找不到主要文件引起的。
解决方法:)~~
尝试用兼容方式运行该程序.右键点击图标——属性——兼容型——选中“以兼容方式运行该程序”——下面的选框中可以选择以95、98、NT4.0或2000模式来运行。推荐选择98试试看。