intptr p = cfunction();
//cfunction方法是个非托段代码 vc6.0生成的 申请了100字节的内存然后将这片内存的首地址返回
//那么我想要在c#释放这片内存应该怎么写Marshal.FreeBSTR(p);
Marshal.FreeHGlobal(p);//以上两种方法都不对
我一开始的想法是用vc再写一个方法,接受一个参数也就是p 然后由vc自己去释放这片内存区
但是我用c#调用这个方法时会不定期的报错,不知道为什么
其实我想问的是c#调用非托管代码的机制是什么,dll的生存期是调用者的生存期还是调用一次以后就释放,望不吝赐教顺便问问我c#释放非托管代码申请的内存会不会有什么其它的问题
//cfunction方法是个非托段代码 vc6.0生成的 申请了100字节的内存然后将这片内存的首地址返回
//那么我想要在c#释放这片内存应该怎么写Marshal.FreeBSTR(p);
Marshal.FreeHGlobal(p);//以上两种方法都不对
我一开始的想法是用vc再写一个方法,接受一个参数也就是p 然后由vc自己去释放这片内存区
但是我用c#调用这个方法时会不定期的报错,不知道为什么
其实我想问的是c#调用非托管代码的机制是什么,dll的生存期是调用者的生存期还是调用一次以后就释放,望不吝赐教顺便问问我c#释放非托管代码申请的内存会不会有什么其它的问题
如果是用的malloc或c++默认的new,可以使用HeapFree API函数使用默认堆释放