什么是AccessViolationException

试图读写受保护内存时引发的异常。

继承

AccessViolationException

说明

当非托管代码或不安全代码尝试对尚未分配的或不具有访问权限的内存进行读写操作时, 会发生访问冲突。 出现这种情况通常是因为指针具有错误的值。 并非所有通过无效指针的读或写操作都会导致访问冲突,所以访问冲突通常指示已经通过无效指针进行多次读或写操作,并且内存内容可能已损坏。 因此, 访问冲突几乎总是指示严重的编程错误。 AccessViolationException清楚地识别这些严重错误。

在完全由可验证托管代码组成的程序中, 所有引用要么有效要么为 null, 并且不可能访问冲突。 任何尝试在可验证代码中引用空引用的操作都会引发NullReferenceException异常。 仅AccessViolationException当可验证托管代码与非托管代码或不安全的托管代码进行交互时才会发生。

AccessViolationException异常只能出现在不安全的托管代码中, 或在可验证托管代码与非托管代码交互时出现:

  • 在不安全的托管代码中发生的访问冲突可以表示为NullReferenceException异常AccessViolationException或例外, 具体取决于平台。

  • 冒泡到托管代码的非托管代码中的访问冲突始终包装在AccessViolationException异常中。

在任一情况下, 都可以识别并更正AccessViolationException异常的原因, 如下所示:

确保您尝试访问的内存已分配。AccessViolationException异常始终由尝试访问受保护的内存 (即, 用于访问未分配的内存或不属于进程的内存) 引发。

自动内存管理是公共语言运行时提供的服务之一。 如果托管代码与非托管代码提供相同的功能, 你可能希望转到托管代码以利用此功能。 确保您尝试访问的内存未损坏。如果多次读或写操作时都遇到无效指针,则内存可能已损坏。 当读取或写入预定义缓冲区之外的地址时, 通常会发生这种情况。

HRESULT

AccessViolationException使用 E_POINTER 值为0x80004003的 HRESULT。

关于System.AccessViolationException异常的更多相关文章

  1. System.AccessViolationException处理

    程序出现 System.AccessViolationException异常会终止进程,try catch是无法捕捉的. 有个处理方法在引发异常的发放上面加上 [System.Runtime.Exce ...

  2. 使用C#在VS中开发:未处理AccessViolationException “System.AccessViolationException”类型的未经处理的异常

    未处理AccessViolationException: “System.AccessViolationException”类型的未经处理的异常在System.Data.dll中发生 其他信息:尝试读 ...

  3. System.AccessViolationException”类型的未经处理的异常在 System.Data.dll 中发生。其它信息:尝试读取或写入受保护的内存。这通常指示其它内存已损坏。

    错误背景: 操作系统:编程环境:VS2013.  语言:VB.net:  数据库:SQLserver2008 做数据库连接时.发生的错误: 错误提示为: 说明:用VB.net连接SQLServer数据 ...

  4. 我异常-VS2012“System.AccessViolationException: 试图读取或写入保护内存。”

       我的系统是win7 64位 系统 安装的是 Visual studio 2012.从SVN上下载了源代码.一个B/S的系统.能正常载入登陆页,但在输入登录信息要登录的时候,就报错了:     - ...

  5. System.AccessViolationException,尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

    从事件查看器中发现,IIS不定期崩溃并重启的现象.抓取crash dump文件后,发现能够看到异常,但没有堆栈信息(主要是只会看托管代码的堆栈,非托管的不清楚.),问题表现及dump日志的截图如下: ...

  6. 未处理AccessViolationException 异常

     在进行arcgis的GP操作时,当操作栅格图像的拼接时,报错: AccessViolationException: 尝试读取或写入受保护的内存 原以为可以通过try catch屏蔽掉错误,不至于程序 ...

  7. c# IOCP.ClientEx2.ReadWrite 加断点遭遇System.AccessViolationException 问题

    起因: 如果在Debug模式下,在IOCP.ClientEx2.ReadWrite.cs while (0 > (nPackSize = _ipcp.Pack(arg_n64PackId, ar ...

  8. 关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复

    早上在编写执行用例时,突然爆异常System.NullReferenceException: 未将对象引用设置到对象的实例 执行代码:

  9. 关于SubSonic3.0查询或更新时出现System.NullReferenceException异常的处理

    在调试程序时,同事发现添加记录时,出现了System.NullReferenceException异常 DictBase dict = new DictBase();    dict.DictCode ...

随机推荐

  1. javascript document.createElement() document.createTextNode() appendChild()

    //--------------document.createElement("div") var div = document.createElement("div&q ...

  2. IDEA中使用git

    这篇文章写的很好,记录参考 [转载] https://blog.csdn.net/autfish/article/details/52513465 https://www.jianshu.com/p/ ...

  3. sql server 压缩日志文件

    USE [master] GO ALTER DATABASE TestDB SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE TestDB SET ...

  4. python鸭子类型

    “当看到一只鸟走起来像鸭子.游泳起来像鸭子.叫起来也像鸭子,那么这只鸟就能够被称为鸭子” python的鸭子类型的设计让python的诸多对象的分类和应用更加灵活,需要注意类型和对象的区别(pytho ...

  5. 转:什么是DIP、IoC、DI

    DIP依赖倒置原则DIP(Dependency-Inversion Principles) IoC控制反转(Inversion of Control,IoC),简言之就是代码的控制器交由系统控制,而不 ...

  6. java之spring mvc之ajax

    1.可以使用servletAPI来实现 ajax Controller 类 @Controller public class AjaxController { @RequestMapping(&quo ...

  7. 使用HttpClient调用接口

    一,编写返回对象 public class HttpResult { // 响应的状态码 private int code; // 响应的响应体 private String body;get/set ...

  8. MySQL数据库汇总

    -- mysql的最大连接数:默认为 100   -- mysql的增删改查   -- mysql统计各个字段(case when 用法 注:也可以使用其他的)   select (case when ...

  9. 拓展 - Webrtc 的回声抵消(aec、aecm)算法简介

    webrtc 的回声抵消(aec.aecm)算法简介 原文链接:丢失.不好意思        webrtc 的回声抵消(aec.aecm)算法主要包括以下几个重要模块:1.回声时延估计 2.NLMS( ...

  10. csdn 分享私藏的18个黑科技网站,想找什么软件就找什么软件!!!

    https://blog.csdn.net/sinat_33921105/article/details/103307419 1.NO.1–胡萝卜周 http://www.carrotchou.blo ...