COM互操作中内存释放的责任 我正在研究一个由.NET DLL提供的C++代码消费服务,我通过COM互操作访问它。我同时编写C++和C语言的边。< /P> 一种被DLL公开并从C++调用的方法,询问DLL 返回包含某些信息的已分配字节数组。在我的C#代码中创建该方法后,.tlb生成器将其公开如下: HRESULT _stdcall DownloadData( [out] SAFEARRAY(unsigned char)* outputBuf);
测试表明,当我根据需要发送指针时,我确实得到了分配的缓冲区 并充满了我需要的信息,但我不明白在这种情况下(C#\C++)是谁的责任来释放内存以及如何释放内存COM互操作中内存释放的责任 我正在研究一个由.NET DLL提供的C++代码消费服务,我通过COM互操作访问它。我同时编写C++和C语言的边。< /P> 一种被DLL公开并从C++调用的方法,询问DLL 返回包含某些信息的已分配字节数组。在我的C#代码中创建该方法后,.tlb生成器将其公开如下: HRESULT _stdcall DownloadData( [out] SAFEARRAY(unsigned char)* outputBuf);,c#,c++,com,com-interop,safearray,C#,C++,Com,Com Interop,Safearray,测试表明,当我根据需要发送指针时,我确实得到了分配的缓冲区 并充满了我需要的信息,但我不明白在这种情况下(C#\C++)是谁的责任来释放内存以及如何释放内存 有什么建议吗?多谢各位 该标准仍然适用于互操作。调用方(使用C#DLL的客户端代码)负责释放outputBufarray(使用)。该标准仍然适用于interop。调用方(使用C#DLL的客户端代码)负责释放outputBufarray(使用)。尽管调用方不是分配实际内存的人?正确。被调用方(C#互操作代码,幕后)将分配内存,调用方(C++代
有什么建议吗?多谢各位 该标准仍然适用于互操作。调用方(使用C#DLL的客户端代码)负责释放
outputBuf
array(使用)。该标准仍然适用于interop。调用方(使用C#DLL的客户端代码)负责释放outputBuf
array(使用)。尽管调用方不是分配实际内存的人?正确。被调用方(C#互操作代码,幕后)将分配内存,调用方(C++代码)应在不再需要时释放内存。尽管调用方不是分配实际内存的人?正确。被调用方(C#互操作代码,幕后)将分配内存,调用方(C++代码)应在不再需要时释放内存。