当前位置: 代码迷 >> .NET分析设计 >> P/Invoke有关问题
  详细解决方案

P/Invoke有关问题

热度:2263   发布时间:2013-02-25 00:00:00.0
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.问题可能是你的非托管代码有线程冲突问题。
  相关解决方案