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

P/Invoke有关问题

2012-12-23 
P/Invoke问题非托管函数有一个double**类型指针参数用以指向二维数组(3*8),在托管代码中我把它封送为IntPt

P/Invoke问题
非托管函数有一个double**类型指针参数用以指向二维数组(3*8),在托管代码中我把它封送为IntPtr[]类型
IntPtr ptr = new IntPtr[3];
for (int i = 0; i < 3; i++)
    ptr  = Marshal.AllocHGlobal(8 * sizeof(double));
传进去的缓冲区内容会被非托管函数修改。
测试调用成功。
但在线多线程连续调用的时候,会发生内存访问违例。
对ptr 是否要手动pin?
[解决办法]
申请内存是非托管的,应该不需要Pin.问题可能是你的非托管代码有线程冲突问题。

热点排行