C# 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
char[] pucCHMsg = new char[4096];
char[] pucPHMsg = new char[4096];
int uiCHMsgLen=0; //此处定义成变参更方便一些
int uiPHMsgLen=0;
//读卡
int srbm = Class1.SDT_ReadBaseMsg(Com, pucCHMsg,uiCHMsgLen,pucPHMsg,uiPHMsgLen,0);
运行到这边就报错了:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
但是在delphi中,pucCHMsg ,pucPHMsg是动态分配内存的
pucCHMsg:PChar;
pucPHMsg:PChar;
GetMem(pucCHMsg, 1024);
GetMem(pucPHMsg, 1024);
iRet := SDT_ReadBaseMsg(Com,pucCHMsg,uiCHMsgLen,pucPHMsg, uiPHMsgLen,0);
在C#中应该如何定义pucCHMsg ,pucPHMsg,而不报错呢,求解啊
[解决办法]
应该是API接口的问题。网上找工具帮忙检查你的.net声明是否正确。
[解决办法]
那两个为0的***Len不对吧,应该是指定对应数组大小的吧。