C#奇怪的异常错误

时间:2011-11-20 10:52:51

标签: c# exception memory dll protected

我正在调用来自本机.NET dll的函数,如下所示:

string v = myDLL.GetValueFromString("header");
MessageBox.Show(v);

执行程序后,我得到了这个奇怪的错误(在执行此函数的行上):“尝试读取或写入受保护的内存。这通常表示其他内存已损坏。”

此错误消息是什么意思?有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:5)

这是一个AccessViolationException。这是一个“硬”异常,处理器实际上在尝试执行机器代码时崩溃。通常是因为它试图通过错误的指针值访问未映射的内存。这对于本机代码来说太常见了,尤其是那种与C字符串一起使用的代码。

我猜你没有写这段代码,你需要得到作者的帮助。给他发一个重现问题的小测试程序。如果您想自己调试一下,那么您需要DLL的源代码并将调试器切换到混合模式,以便您可以调试C#和本机代码。 Project + Properties,Debug选项卡,勾选“启用非托管代码调试”选项。在您调用的本机函数中设置断点。