读书人

C# 尝试读取或写入受保护的内存。这通

发布时间: 2013-10-21 17:03:30 作者: rapoo

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不对吧,应该是指定对应数组大小的吧。

读书人网 >asp.net

热点推荐