C#奇怪的异常错误

ray*_*ran 2 c# memory dll exception protected

我正在调用本机.NET DLL中的函数,如下所示:

string v = myDLL.GetValueFromString("header");
MessageBox.Show(v);
Run Code Online (Sandbox Code Playgroud)

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

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

Han*_*ant 5

这是一个AccessViolationException.这是一个"硬"异常,处理器实际上在尝试执行机器代码时崩溃.通常是因为它试图通过错误的指针值访问未映射的内存.这在本机代码中非常常见,尤其是与C字符串一起使用的代码类型.

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