C#调用返回C++指针的缓冲区,并释放
2012-12-30 13:54
666 查看
在C++的函数中new了一段内存
char *test(char* filename) { new一段内存 } void release(char *mm); { delete一段内存 } [DllImport("test.dll", EntryPoint = "test", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr test( string filename); [DllImport("test.dll", EntryPoint = "release", CallingConvention = CallingConvention.Cdecl)] public static extern void release(IntPtr sb); public static IntPtr GetPtr(string filename) { return test(filename); } static unsafe void Main(string[] args) { string sb = @"路径名"; IntPtr re = XX.GetPtr(sb); string result = Marshal.PtrToStringAnsi(re); //释放非托管代码申请的内存 XX.release(re); //内存已释放,所以打印结果为空 Console.WriteLine(Marshal.PtrToStringAnsi(re)); //result引用的对象是已释放的对象的副本,所以打印结果为所需结果 Console.WriteLine(result); Console.ReadLine(); }
相关文章推荐
- C#调用C++DLL的小总结8---C++Dll中函数返回字符串指针
- C# 调用C/C++ Dll(参数含char*指针,返回char*指针)
- Unity使用C#调用C++dll传递指针参数、接收指针返回值
- C# 调用C++dll中接口,返回const char*
- C#调用C++方法,C#使用c++方法返回类或结构体
- c# 调用 研华库函数中 C++ 非托管 Dll 一例(包含指针成员的结构体的调用)
- C#调用C++生成的Dll库,Dll使用callback向C#传递指针
- c#调用c++写成的dll文件,返回char*,返回数组,用ref接收,byte[] (zz)
- C#调用C++方法,C#使用c++方法返回类或结构体
- C# 调用C++DLL传递的bool型,返回混乱
- C# 调用C++DLL传递的bool型,返回混乱
- c# 调用 研华库函数中 C++ 非托管 Dll 一例(包含指针成员的结构体的调用)
- C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)
- C#用委托调用C++写的dll里面的函数指针
- C#调用C++方法,C#使用c++方法返回类或结构体
- C#调用C++dll 中具有高维指针参数的接口函数
- C#调用C++方法,C#使用c++方法返回类或结构体
- C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)
- c#调用C++写的DLL,传递二维指针参数
- C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)