C#中向OCX中传递数组,过大的话,总出现内存读写问题
C#调用OCX,其中一个参数为一个50多万字节(将近0.5兆大小)的字节数组
C#中new一个50多万字节的数组,如果传递这个50多万字节的数组的话,会出现内存读写问题
如果传递少点,比如说2万个字节的话,就没问题
OCX中在这里出现问题的地方,就是一个C语言库的内存拷贝函数,memcpy
我不确定是不是因为字节过多导致这个问题,别处也没发现什么不对的地方
请问,会不会是因为字节过多导致的?
C#中代码
Byte[] lpBuf = new Byte[nBytes]; //nBytes=512356
WT_OCX.SetImage(nWidth, nHeight, nBitCount, ref lpBuf[0], 0x6000);
VC的OCX中出现内存读写问题的代码
memcpy(global.imgInput.m_lpBuf, lpImage, global.imgInput.m_nLineLength * nHeight);\\一共要复制512356个字节
------解决方案--------------------是不是有什么地方越界了?
我感觉内存不足出现的异常应该不是memory corrupt这类的。
------解决方案--------------------1 byte[]的长度没传过去,ocx计算的和c#传的是否一致;
2 把c#中 ref byte[] 改为 IntPtr 传看.
------解决方案--------------------尝试读写受保护的内存,这通常指示其它内存已破坏
这种就是使用越界的内存的错误了。
我觉得500k不大,应该不会引起内存不足的错误。