为什么在使用struct而不是class时会出现AccessViolationException

时间:2012-02-08 15:28:09

标签: c# c++-cli pinvoke

当我将struct传递给某个PInvoke方法时,我会收到错误

  

未处理的异常:System.AccessViolationException:尝试读取或写入    受保护的记忆这通常表明其他内存已损坏。

当我使用课程时,就可以了。

我想知道背后的原因吗?

1 个答案:

答案 0 :(得分:1)

MSDN在this文章中声明:​​

  

默认情况下,本机和托管结构的布局不同   内存,所以成功传递结构   托管/非托管边界需要额外的步骤来保存数据   完整性。

您还可以找到在那里使用PInvoke时会派上用场的其他信息。