首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.NET下访问冲突错误的常见原因

.NET下访问冲突错误的常见原因
EN

Stack Overflow用户
提问于 2009-02-08 15:27:49
回答 2查看 8.3K关注 0票数 8

我正在寻找.NET下访问冲突错误的常见原因。

我已经查过的东西-

  • 对实现IDisposable的所有对象调用Dispose
  • 检查对COM对象的调用中的有效参数
  • 显式删除所有手动添加的事件处理程序。
  • 请不要调用GC.Colect/GC.WaitForPendingFinalizer
  • 在处理本机对象(位图等)时添加和消除内存压力(添加了)
  • 验证对有效参数类型的所有PInvoke调用
  • 确保IntPtr,SafeHandle和HandleRef的正确使用
  • 线程(线程安全,重入功能),正确使用腰部。(添加了)
  • 确保应用程序和dll都具有相同的平台(x86或x64) (应用程序和dll的目标应该与COM对象相同。)(添加了)

还有其他建议吗?

编辑-将崩溃转储分析移至不同的问题。

EN

回答 2

Stack Overflow用户

发布于 2009-02-08 15:48:56

任何不安全或非托管代码的使用都会导致这种类型的异常。

AccessViolationException:

在非托管或不安全代码中,当代码试图读取或写入未分配或没有访问权限的内存时,就会发生访问冲突。这通常是因为指针的值很差。并非所有通过错误指针进行的读或写都会导致访问冲突,因此访问冲突通常表示通过错误的指针发生了几次读或写,并且内存可能已损坏。因此,访问冲突几乎总是表明严重的编程错误。在.NET框架2.0版本中,AccessViolationException清楚地识别了这些严重错误。 在完全由可验证的托管代码组成的程序中,所有引用都是有效或空的,并且访问冲突是不可能的。只有当可验证的托管代码与非托管代码或与不安全的托管代码交互时,AccessViolationException才会发生。

推荐:

GFlags应用验证器

票数 3
EN

Stack Overflow用户

发布于 2009-02-08 15:30:17

您是在运行时生成IL,还是使用这样做的组件?使用不安全的C#代码,做指针操作?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/526649

复制
相关文章

相似问题

游戏中如何产生体积效应?(例如烟雾/火灾)

10

我如何创造烟雾状光束或光环效应?

20

DOTween:如何产生弹跳效应?

10

如何产生向四面八方扩散的烟雾?

20

如何在游戏中产生“网络效应”?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档