Go中切片内存占用问题,相差了两倍???

lysShub · · 741 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

```go func main() { debug.SetGCPercent(-1) fh, _ := os.Open(`E:\android-ndk-r15c-windows-x86_64.zip`) fi, _ := fh.Stat() l := int(fi.Size()) for i := 0; i < l; { b := make([]byte, 1024) fh.ReadAt(b, int64(i)) X(&b) i = i + 1024 } } func X(b *[]byte) { h := []byte("12345678") // --------------方-案-一-------------------- // fmt.Println(&((*b)[len(*b)-1])) *b = append(h, (*b)...) // 900MB fmt.Println(&((*b)[len(*b)-1])) // --------------方-案-二-------------------- // // fmt.Println(&((*b)[1023])) // *b = append((*b), h...) // 1900MB // fmt.Println(&((*b)[1023])) } ``` 为什么方案二占用内存比方案一两倍还多?<br> 值得一提的是方案二的b在append之前和之后的地址都没变!

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

741 次点击  
加入收藏 微博
2 回复  |  直到 2021-01-26 10:42:38
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传