110,534
社区成员
发帖
与我相关
我的任务
分享
public static string 显示柜台返回信息()
{
StringBuilder pDataBack = new StringBuilder();
pDataBack.Capacity = 300000;
readAnswer(ThreadNo, UniNumber, dwCommObj, ref pDataBack);
string temp = pDataBack.ToString();
return temp;
}
未处理的异常: System.AccessViolationException: 尝试读取或写入受保护的内存。这通
常指示其他内存已损坏。
在 SingleFunctionBetter.ReadAnswer.Invoke(Int32 ThreadNo, Int32 UniNumber, In
t32 dwCommObj, StringBuilder& pDataBack)
在 SingleFunctionBetter.Fixture.显示柜台返回信息() 位置 C:\guangda\test\Fixtu
re.cs:行号 111
在 SingleFunctionBetter.Fixture.Main(String[] args) 位置 C:\guangda\test\Fixt
ure.cs:行号 249
请按任意键继续. . .
byte* pDataBack=stackalloc byte[3000];
readAnswer(ThreadNo, UniNumber, dwCommObj, pDataBack);
// 忘了 C# 的栈空间很小,当然,你那个错误提示并非栈溢出。
// 干脆改用这样试试
byte[] DataBack=new byte[30000];
fixed (byte* pDataBack=DataBack) {
readAnswer(ThreadNo, UniNumber, dwCommObj, ref pDataBack);
}
// 另外,你这怎么写的?
[DllImport...]
static extern
bool readAnswer(int ThreadNo, int UniNumber, uint dwCommObj, ref byte pDataBack);