尝试读取或写入受保护的内存。这通常指示其他内存已损坏。解决方案
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
C#调用OK采集卡问题,卡型号OK_M20A,遇到错误"尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"
出现在Marshal.FreeHGlobal(pData),希望有做过图像卡采集的大神指点一下
------解决方案--------------------
指针地址不对。。你分配内存的时候没把每个像素占用的空间算进去。。。。
------解决方案--------------------
Pdata被破坏,已不是最初的pdata了,看看api的调用约定
------解决方案--------------------
内存问题往往跟指针操作不当有关
------解决方案--------------------
应该是指针有问题.
------解决方案--------------------
dotnet是会自动回收内存的。
在厂家类库里自动分的内存,有可能会在c#中被释放。
------解决方案--------------------
在API初始化、释放这方面看看
C#调用OK采集卡问题,卡型号OK_M20A,遇到错误"尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"
采集图片
OK32API.okCaptureTo(this.m_handle, OK32Targets.Buffer, 0, 1);
OK32API.okGetCaptureStatus(this.m_handle, 1);
//取得图片信息
short width; //
short height; //
int stride;//
OK32API.okGetTargetInfo(this.m_handle, OK32Targets.Buffer, 0, out width, out height, out stride);
//读取图片数据
IntPtr pData = Marshal.AllocHGlobal(stride * height);
OK32API.okReadRect(this.m_handle, OK32Targets.Buffer, 0, pData);
bmp = new Bitmap(width, height, stride, PixelFormat.Format24bppRgb, pData );
bmp.RotateFlip(RotateFlipType.Rotate180FlipNone);
Marshal.FreeHGlobal(pData);
出现在Marshal.FreeHGlobal(pData),希望有做过图像卡采集的大神指点一下
c#
------解决方案--------------------
指针地址不对。。你分配内存的时候没把每个像素占用的空间算进去。。。。
------解决方案--------------------
Pdata被破坏,已不是最初的pdata了,看看api的调用约定
------解决方案--------------------
内存问题往往跟指针操作不当有关
------解决方案--------------------
应该是指针有问题.
------解决方案--------------------
dotnet是会自动回收内存的。
在厂家类库里自动分的内存,有可能会在c#中被释放。
------解决方案--------------------
在API初始化、释放这方面看看