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

C#中向OCX中传递数组,过大的话,总出现内存读写有关问题

2013-02-03 
C#中向OCX中传递数组,过大的话,总出现内存读写问题C#调用OCX,其中一个参数为一个50多万字节(将近0.5兆大小

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不大,应该不会引起内存不足的错误。

热点排行