Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.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
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 - Fatal编程技术网

COM互操作中内存释放的责任 我正在研究一个由.NET DLL提供的C++代码消费服务,我通过COM互操作访问它。我同时编写C++和C语言的边。< /P> 一种被DLL公开并从C++调用的方法,询问DLL 返回包含某些信息的已分配字节数组。在我的C#代码中创建该方法后,.tlb生成器将其公开如下: HRESULT _stdcall DownloadData( [out] SAFEARRAY(unsigned char)* outputBuf);

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#\C++)是谁的责任来释放内存以及如何释放内存


有什么建议吗?多谢各位

该标准仍然适用于互操作。调用方(使用C#DLL的客户端代码)负责释放
outputBuf
array(使用)。

该标准仍然适用于interop。调用方(使用C#DLL的客户端代码)负责释放
outputBuf
array(使用)。

尽管调用方不是分配实际内存的人?正确。被调用方(C#互操作代码,幕后)将分配内存,调用方(C++代码)应在不再需要时释放内存。尽管调用方不是分配实际内存的人?正确。被调用方(C#互操作代码,幕后)将分配内存,调用方(C++代码)应在不再需要时释放内存。