日期:2014-05-17  浏览次数:20899 次

C#调用c的dll出错,急!急!急!
函数原型:void _stdcall ReleaseMemory(unsigned char **OUTData)  函数功能:释放内存
C#调用: [DllImport("a.dll")]
        public static extern void ReleaseMemory(ref StringBuilder OUTData);
出现错误:尝试读取或写入受保护的内存。这通常指示其他内存已损坏
用string也是同样的错误,无助啊!
C# 内存

------解决方案--------------------
byte或void**是这样用的:
void* pv = IntPtr.Zero.ToPointer();
void** OutData= &pv;
当然你用ref byte*也可以。

取内容用Marshal.PtrToStringAnsi(new IntPtr(*OutData,length),); 这是void**的时候