问题描述
我在Go中编写了一个文件传输接口,该接口接受本地路径和远程服务器信息,然后按块传输文件。情况是我想在C#中使用它,并且我知道Go可以内置到 C-Shared dll中,并可以通过P / Invoke在C#中调用。我想知道go分配的非托管内存是否将收集的垃圾?如果没有,是否有办法释放这部分内存?
解决方法
垃圾收集器不会了解Go代码的非托管内存。
如果要释放它,则应在Go代码中对其进行管理,或者至少准备要在C#中调用的函数并处理非托管内存。
我的建议是:
- Go中释放内存的功能
- 然后,当您要处置对象时,请使用C#调用此函数。