是否需要释放C+中字符串的内存+;从C#收到? 我在C++中有以下公开的DLL函数 //旋转api.h的中心 //API的中心是一个类似于Windows上的cdecl(dllexport)的宏 旋转网格的中心(网格*网格,常量字符*路径); 旋转中心API常量字符*序列化错误(网格*网格);
从C#开始,我使用以下命令是否需要释放C+中字符串的内存+;从C#收到? 我在C++中有以下公开的DLL函数 //旋转api.h的中心 //API的中心是一个类似于Windows上的cdecl(dllexport)的宏 旋转网格的中心(网格*网格,常量字符*路径); 旋转中心API常量字符*序列化错误(网格*网格);,c#,c++,memory-leaks,interop,marshalling,C#,C++,Memory Leaks,Interop,Marshalling,从C#开始,我使用以下命令 //dll是已编译dll的名称 [DllImport(dll)] 公共静态外部网格(IntPtr网格,字符串路径); [DllImport(dll)] 公共静态外部IntPtr序列化错误(IntPtr mesh); 代码> >序列化错误返回的 ItPtR/在C++中使用新< /COD>进行分配。因此,我有另一个DLL导出函数,它在被C#调用时释放指针 我的问题是,我需要在C++中的代码< > SerialZimeMeS/中,释放 const char *路径>代码>
//dll是已编译dll的名称
[DllImport(dll)]
公共静态外部网格(IntPtr网格,字符串路径);
[DllImport(dll)]
公共静态外部IntPtr序列化错误(IntPtr mesh);
<>代码> >序列化错误返回的<代码> ItPtR/<代码>在C++中使用<代码>新< /COD>进行分配。因此,我有另一个DLL导出函数,它在被C#调用时释放指针
我的问题是,我需要在C++中的代码< > SerialZimeMeS/<代码>中,释放<代码> const char *路径>代码>内存吗?char*
将在PInvoke调用的生存期内有效。如果C++代码希望拥有<代码> char */COD>,则应该在const char*
,则可能需要将设置为UnmanagedType.LPStr
。有关字符串封送处理行为的详细信息,请参阅
如果你想更深入地挖掘,这是另一个有用的参考