C++代碼調用返回字符串的C#方法。我應該如何釋放C++中分配的非託管內存?我應該使用免費()還是刪除?如何釋放由C#編組從C#分配給C++的非託管內存
C#:
[Guid("52E4971F-E075-41BA-A84F-B6BE8BD66A21")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[ComImport]
public interface ISomeInterface
{
[return: MarshalAs(UnmanagedType.LPWStr)]
string SomeMethod([MarshalAs(UnmanagedType.LPWStr)] string text);
}
C++:
class SomeClass
{
virtual int32_t __stdcall _someMethod(const char16_t *text, char16_t **r) = 0;
char16_t * someMethod(const char16_t *text)
{
char16_t * result;
_someMethod(text, &result);
return result; // how to correct release this memory?
}
}
的解決方案適用於Windows和Linux上。
能否請您展示一些/您的代碼,以便我們可以以最好的方式提供幫助? –