首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2013-10-21 
C# 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 char[] pucCHMsg new char[4096] char[] pu

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

热点排行