当使用完释放内存时实现的并不是很好,应该判断释放的数据是否是当前内存的一部分,如果不是的就不能放回到内存池中,因为用户未按约定大小使用,导致大量扩容而使得内存池中的数据碎片化,当然用户一旦发生扩容就会导致内存池中的缓存块丢失,导致存在大块内存无法释放,却也没法使用的情况。
之所以分析这个例子主要是分析其使用 slice 的方法和技巧,并不推荐使用该方法管理内存。
拓展更多关于 slice 应用的例子可以参考标准库 bytes 与 bufio, buffer 与 bufio 的使用极其相似,两个包都是使用 slice 来减少内存分配及系统调用来达到实现缓冲和缓存的例子。