我正在开发一个使用 .NET dll 提供的服务的 C++ 代码,我通过 COM Interop 访问它。我正在编写 C++ 和 C# 方面。
由 dll 公开并从 C++ 调用的方法之一要求 dll 返回包含一些信息的已分配字节数组。在我的 C# 代码中创建该方法后,.tlb 生成器将其公开如下:
HRESULT _stdcall DownloadData(
[out] SAFEARRAY(unsigned char)* outputBuf);
测试表明,当我按要求发送指针时,我确实获得了分配的缓冲区并填充了我需要的信息,但我不明白在这种情况下,释放此内存的责任是谁(C#\C++)以及如何。
有什么建议吗?谢谢你。