C++コードは文字列を返すC#メソッドを呼び出します。割り当てられたアンマネージメモリをC++で解放する方法は?私はfree()かdeleteを使うべきですか?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上で動作します。
可能な限り最良の方法で対応できるように、コードを表示してください。 –