gpt4 book ai didi

c# - 我是否需要释放用作函数参数的托管 BSTR

转载 作者:太空狗 更新时间:2023-10-30 00:43:34 25 4
gpt4 key购买 nike

如果我有从非托管代码调用的托管 COM 接口(interface),我是负责在使用后释放内存还是由垃圾回收处理?

 public void WriteOutFile([In] [MarshalAs(UnmanagedType.BStr)] String data)
{
File.WriteAllText(fileName, data);
//do I need the line below??
Marshal.FreeBSTR(data);
}

谢谢

最佳答案

编码涉及将数据从非托管内存复制到托管内存。您不需要释放 string 实例,因为它是一个托管对象。但是如果在回调调用之前在 native 代码中分配内存,则需要在回调调用之后释放 native 代码中的内存。

关于c# - 我是否需要释放用作函数参数的托管 BSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10562104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com