C#根据内存地址数值,获取内存数据。求赐教
C++回调函数返回指针地址(string 类型),将string类型转换为Int64,然后将Int64转换为指针IntPtr,再将InPtr转为为结构体。
代码如下:
string VideoDatapTR = GetCmdAttrib(pCommandBuf, newBuffer, 1024, "DATASTRUCT");
IntPtr ptr = new IntPtr(Convert.ToInt64(VideoDatapTR));
_VIDEO_DATA_YUV2 yuv2 = (_VIDEO_DATA_YUV2)Marshal.PtrToStructure(ptr, typeof(_VIDEO_DATA_YUV2));
Marshal.FreeHGlobal(ptr);
结构体如下:
[StructLayout(LayoutKind.Sequential,CharSet = CharSet.Unicode)]
private struct _VIDEO_DATA_YUV2
{
public uint dwWidth;
public uint dwHeight;
public uint dwStride;
public uint dwPixelFormat;
public uint dwLength;
}
代码报错:
System.AccessViolationException:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”
请问有人处理过这样的内存吗?求赐教