C# 尝试读取或写入受保护的内存。这通常指示其他内存已损坏

2024-11-25 13:29:00
推荐回答(3个)
回答1:

[DllImport("dd.dll",CallingConvention=CallingConvention.StdCall,CharSet=CharSet.Auto,EntryPoint="aaa",SetLastError=false)]
public static extern int aa(uint addr,ref Byte[] str) 你这里Delphi原型里面的pchar是数组,而不是字符串所以会提示内存损坏,很常见,就这个问题

回答2:

1、delphi默认的调用顺序是 cdecl,不知道在c#中那样是不是这种调用顺序2、PChar很可能需要外部分配好的内存。3、你用delphi或vc也写个调用的例子试试看

回答3:

C#托管代码通常不会出现这个问题,这个错误通常是使用了系统API函数操作修改了静态内存区域.
FORM2没有引用FORM1的treeview的节点吧?有代码好查些.