Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否需要释放C+中字符串的内存+;从C#收到? 我在C++中有以下公开的DLL函数 //旋转api.h的中心 //API的中心是一个类似于Windows上的cdecl(dllexport)的宏 旋转网格的中心(网格*网格,常量字符*路径); 旋转中心API常量字符*序列化错误(网格*网格);_C#_C++_Memory Leaks_Interop_Marshalling - Fatal编程技术网

是否需要释放C+中字符串的内存+;从C#收到? 我在C++中有以下公开的DLL函数 //旋转api.h的中心 //API的中心是一个类似于Windows上的cdecl(dllexport)的宏 旋转网格的中心(网格*网格,常量字符*路径); 旋转中心API常量字符*序列化错误(网格*网格);

是否需要释放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 *路径>代码>

从C#开始,我使用以下命令

//dll是已编译dll的名称
[DllImport(dll)]
公共静态外部网格(IntPtr网格,字符串路径);
[DllImport(dll)]
公共静态外部IntPtr序列化错误(IntPtr mesh);
<>代码> >序列化错误返回的<代码> ItPtR/<代码>在C++中使用<代码>新< /COD>进行分配。因此,我有另一个DLL导出函数,它在被C#调用时释放指针

我的问题是,我需要在C++中的代码< > SerialZimeMeS/<代码>中,释放<代码> const char *路径>代码>内存吗?
char*
将在PInvoke调用的生存期内有效。如果C++代码希望拥有<代码> char */COD>,则应该在SerialZimeSe 是字符串封送处理的入门。如果确实需要使用
const char*
,则可能需要将设置为
UnmanagedType.LPStr
。有关字符串封送处理行为的详细信息,请参阅

如果你想更深入地挖掘,这是另一个有用的参考