比如,有这样一个函数:
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)
这处动态内存分配?
比如,有这样一个函数:
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)
这处动态内存分配?
3 回答1.6k 阅读✓ 已解决
2 回答1.3k 阅读
2 回答1.1k 阅读
2 回答1.1k 阅读
2 回答887 阅读
3 回答704 阅读
1 回答955 阅读
这个问题只能从你自身的需求来讲,每次调用foo如果期望一个独立的slice返回,那么只能这么办了。如果不是这样,可以考虑以下方法:
申明一个生命周期在函数foo以外的slice,每次复用这个slice(前提是你需要保证这样没问题)
类似于redis的内存管理,初始化一个大slice,每次使用大slice的一部分