1、Access Violation(非bai法访问),General Protection Fault(一般保护性错误du)或者Invalid Page Fault(无效页面错误),虽然说法不zhi一样,但本质上总是由同一种dao错误引起的。

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试试看。

2、运行期的Access Violation 
在Delphi程序中,一个最普遍导致Access Violation错误的原因是使用了一个没有被创建的对象。如果第二个地址<十六进制值 >是FFFFFFF或0000000,十有八九就是你访问? 了一个没有被建立的对象。例如,你调用了一个表单的事件,但这个表单不是自动创建的, 也没有代码实例化。

3、Delphi开发中会出现的一些问题

下面列出了Delphi环境下导致Access violation错误的大部分常见原因。这个列表不是也不可能覆盖所有可能出现的 Access violation的情况。请在论坛上发送你的Access violation信息,大家可以试着一起解决这个问题——真正的实际事例一 般情况下比列出来的错误隐晦得多。

3.1. 调用一个不存在的对象 
如上所述,大部分Access violation的合理原因是使用了没有被创建或者已经被释放的对象。为了防止这种类型的 Access violation的发生,请确保你访问的任何对象都首先被创建了。例如,当一个Table定位在一个没有被创建的data module (从auto-crete窗口里移走了)里,你可能在窗体的OnCreate事件里打开这个表。 
在下面的代码里,在调用一个已经被删除了的对象(b:TBitmap)事件后,一个Access violation出现了: 
var b:TBitmap; 
begin 
b:=TBitmap.Create; 
try 
//对b对象进行一些操作 
finally 
b.free; 
end;  
... 
//由于b已经被释放,一个Access violation错误将会出现 
b.Canvas.TextOut(0,0,’这是一个 Access Violation’); 
end;

3.2. 不存在的API参数 
如果你试图给Win API函数传递一个不存在的参数将会出现一个Access violation错误。解决此类Access violation错误 的最好方法是查阅Win API帮助,看看这个API函数调用的参数信息以及参数类型。例如,总是保证不给一个缓冲参数传递一个无效指针。

3.3. 让Delphi释放 
当一个对象拥有另一个对象时,让它给你做删除工作。因为默认情况下,所有的窗体(自动创建的)都属于Application对象。当一个应用程序结束时, 它释放了Application对象,也就释放了所有窗体。例如,如果你在程序开始时自动创建了两个窗体(Form1/Unit1和 Form2/Unit2),下面的代码就会导致Access violation错误的出现: 
unit Unit1; 
... 
uses unit2; 
... 
procedure TForm1.Call_Form2 
begin 
Form2.ShowModal; 
Form2.Free; 
//Access violation错误将会出现  
Form2.ShowModal;  
end;

3.4. 杀死异常 
永远不要破坏临时异常对象(E),处理一个异常会自动释放异常对象。如果你自己手动释放了异常对象,程序会试图再次释放它,那么就会出现Access violation错误: 
Zero:=0; 
try 
dummy:= 10 / Zero; 
except 
on E: EZeroDivide do 
MessageDlg(’不能用0做除数!’,mtError, [mbOK], 0); 
E.free. Access violation错误将会出现 
end;

3.5. 检索一个空字符串 
一个空字符串是没有任何数据的。就是说,检索一个空字符串相当于访问一个不存在的对象,这将导致Access violation错误: 
var s: string; 
begin 
s:=’’; 
s[1]:=’a’;  
//Access violation错误将会出现 
end;

3.6. 直接引用指针 
你必须间接引用指针,否则你会改变指针地址并可能会破坏其他存储单元 : 
procedure TForm1.Button1Click(Sender: TObject); 
var 
p1 : pointer; 
p2 : pointer; 
begin 
GetMem(p1, 128); 
GetMem(p2, 128); 
//下一行导致Access violation错误 
Move(p1, p2, 128); 
//下一行方法正确 
Move(p1^, p2^, 128); 
FreeMem(p1, 128); 
FreeMem(p2, 128); 
end; 
这些就是我对运行期Access Violation错误的全部建议,我希望你们也能对你们程序出现的Access Violation错误提出一些看法。

Access Violation(非法访问)问题解析相关推荐

  1. cad2018致命错误unhandled_CAD--致命错误unhandled access violation

    Access Violation (非法访问), General Protection Fault (一般保护性错误) 或者 Invalid Page Fault (无效 页面错误 ),虽然说法不一样 ...

  2. access violation at address in module Read of address

    http://zhidao.baidu.com/question/91187173 Access Violation(非法访问)错误的解决方法(转自网上)2009-02-03 16:33        ...

  3. python access violation_Python x64下ctypes动态链接库出现access violation的原因分析

    access violation error in Python x64 when using ctypes (caused by pointer) 问题描述 似乎这个问题仅存在于Windows下Py ...

  4. Access violation问题

    这礼拜在工作中遇到了非法访问内存问题,也就是 Access violation问题,出现了类似下面这种报错: Access violation at address ××× in module 'xx ...

  5. access violation at address 解决之法【转】

    右击"我的电脑".单击"属性". 在"系统属性"中单击"高级". 在"性能"中单击"设置& ...

  6. “*** error 65: access violation at 0x0000000C : no 'read' permission”错误的解决

    摘要:STM32F407VG工程进入软件仿真时,出现*** error 65: access violation at 0x0000000C : no 'read' permission错误.当点击R ...

  7. linux中非法内存,Linux下数组非法访问导致内存破坏 —— 引发segmentation fault的原因...

    2012-02-05 wcdj 1, 调试时必需的栈知识 2, 数组非法访问导致内存破坏 调试时必需的栈知识 栈(stack)是程序存放数据的内存区域之一,其特征是LIFO(Last In First ...

  8. Forrtl: severe(157): Program Exception - access violation

    这是在Fortran中经常碰到的错误,access violation一般是访问到了不能访问的内存. 个人碰到几种情况: Array-out-of-bounds error:数组越界 Stack ov ...

  9. 简单Access Violation的异常派发,Vista/Longhorn Server

    以前就发现LH的Exception Handling有变化.当程序崩溃后,程序会被系统挂在发生问题的汇编代码上,这样直接用调试器上去就可以看了.当时一直想研究下具体怎么实现的.另外在<Windo ...

最新文章

  1. kaka 1.0.0 重磅发布,服务于后端的事件领域模型框架。
  2. ccxprocess启动项可以禁用么_macOS 删除烦人的CCXProcess.app
  3. Spring与Hibernate结合使用
  4. boost::safe_numerics模块测试对文字的 constexpr 操作
  5. stm32的语音识别_免费开源基于STM32的智能垃圾桶之舵机控制(HAL库)
  6. Eclipse高级使用技巧
  7. signature=cb97f07fbd7b371e6311b0d8707b6398,vue 汉字转拼音(filter)
  8. IOS端好用的ssh工具推荐
  9. 数仓工具—Hive的数据组织管理方式(4)
  10. Unity 用什么IDE比较好?
  11. E.04.02 Zoom Fatigue: The Differing Impact on Introverts and Extroverts
  12. android音频编辑之音频裁剪
  13. 魔百盒CM211-2_ZG代工-强刷固件包和教程
  14. 中关村工业互联网产业联盟成立大会成功召开
  15. 安全合规--39--基于欧美法律法规的企业隐私合规体系建设经验总结(三)
  16. Linux 磁盘分区工具gdisk
  17. 聚米优选:“文学式vlog”主播,这么猛的吗?
  18. 第15讲:Python列表对象的反转与排序
  19. 20200428|为了完成“使用ARCGIS绘制山东省行政区划图”实验而做的事情——从安装到成图
  20. Vue项目打包部署(history模式)

热门文章

  1. 百度地图只显示你想要的部分
  2. hadoop +hbase+zookeeper 伪分布安装(超级无敌详细)
  3. 常数乘以无穷大等于多少_0乘以无穷大等于多少?
  4. C语言有关的大创项目,大创项目(开题报告)初稿.doc
  5. 【转】48个诡异心理学
  6. sql server 索引阐述系列二 索引存储结构
  7. 【大数据开发】SparkCore——Spark作业执行流程、RDD编程的两种方式、简单算子
  8. win10如何置顶某个窗口
  9. centos6 10分钟快速搭建iscsi存储服务器
  10. java利用二维数组查找鞍点_java找二维数组的鞍点