可以在go中手动释放内存吗?

Sła*_*osz 3 go

在与大学讨论后,我想知道是否有可能(即使完全没有任何意义)在go中手动释放内存(即通过使用不安全的包).是吗?

bas*_*gys 11

这是一个您可能感兴趣的线程:为GOGC = off添加runtime.Free()

有趣的部分:

Go GC无法再手动解除分配块.此外,运行时.免费是不安全的(人们可能仍然使用指针或双倍免费),然后Go努力摆脱的各种C内存问题将会回来.另一个原因是运行时有时会在您的背后分配,并且程序无法显式释放内存.

如果您真的想用Go手动管理内存,请基于syscall.Mmap或cgo malloc/free实现自己的内存分配器.

对于像Go这样的并发语言来说,长时间禁用GC通常是一个糟糕的解决方案.Go的GC只会更好.

TL; DR:是的,但不要这样做