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

p/invoke的错误:尝试读取或写入受保护的内存。这通常指示其他内存已损坏

2012-03-18 
p/invoke的异常:尝试读取或写入受保护的内存。这通常指示其他内存已损坏调用win32 api需要将指针对象USE_IN

p/invoke的异常:尝试读取或写入受保护的内存。这通常指示其他内存已损坏
调用win32 api需要将指针对象
USE_INFO_2 use2 = new USE_INFO_2();//结构体
IntPtr pBuf = IntPtr.Zero;
Marshal.StructureToPtr(use2, pBuf, true)将结构体转成非托管的指针对象时报下面错误:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。请各位高手指导。

[解决办法]
Marshal.StructureToPtr里面的IntPtr要已经分配足够的内存,直接传IntPtr.Zero不行。

http://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices.marshal.structuretoptr.aspx

热点排行