关于异常的疑难解答:System.AccessViolationException

当尝试读或写受保护的内存时会引发 AccessViolationException

相关提示

  • 确保您尝试访问的内存已分配。
    自动内存管理是公共语言运行时提供的服务之一。 您可能希望移至托管代码以便利用此服务。 有关更多信息,请参见 自动内存管理

  • 确保您尝试访问的内存未损坏。
    如果多次读或写操作时都遇到无效指针,则内存可能已损坏。

ms164911.collapse_all(zh-cn,VS.110).gif备注

如果非托管代码或不安全代码尝试对尚未分配的或不具有访问权限的内存进行读操作或写操作,就会发生访问冲突。 并非所有通过无效指针的读或写操作都会导致访问冲突,所以访问冲突通常指示已经通过无效指针进行多次读或写操作,并且内存内容可能已损坏。

在托管代码中,所有的引用或者有效或者为 null。 尝试在可验证代码中引用 null 引用的任何操作都将引发 NullReferenceException

根据平台不同,不安全的托管代码中发生的访问冲突可以表示为 NullReferenceExceptionAccessViolationException

向上冒泡到托管代码的非托管代码中的访问冲突总是包装在 AccessViolationException 中。

请参见

任务

如何:使用异常助手

概念

内存管理:示例

自动内存管理