2016-10-14 17:55发布
比如,有这样一个函数:
func foo(n int) []byte { bar := make([]byte, n) ...do some thing with b return bar }
bar := make([]byte, n)是一处动态内存分配,函数的其他部分不会再对bar的大小进行修改了。这种情况下有没有方法消除bar := make([]byte, n)这处动态内存分配?
bar := make([]byte, n)
bar
申明一个生命周期在函数foo以外的slice,每次复用这个slice(前提是你需要保证这样没问题)
如果不是,那么别想多了。
类似于redis的内存管理,初始化一个大slice,每次使用大slice的一部分
这个问题只能从你自身的需求来讲,每次调用foo如果期望一个独立的slice返回,那么只能这么办了。如果不是这样,可以考虑以下方法:
这种问题是很单纯的自己想多的。
如果是Read Only 的可以使用楼上的方法。
可以bar := make([]byte, n, capacity),预先指定一个容量。
bar := make([]byte, n, capacity)
最多设置5个标签!
付费偷看金额在0.1-10元之间
申明一个生命周期在函数foo以外的slice,每次复用这个slice(前提是你需要保证这样没问题)
如果不是,那么别想多了。
类似于redis的内存管理,初始化一个大slice,每次使用大slice的一部分
这个问题只能从你自身的需求来讲,每次调用foo如果期望一个独立的slice返回,那么只能这么办了。如果不是这样,可以考虑以下方法:
这种问题是很单纯的自己想多的。
如果是Read Only 的可以使用楼上的方法。
可以
bar := make([]byte, n, capacity)
,预先指定一个容量。一周热门 更多>