```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之前和之后的地址都没变!
有疑问加站长微信联系(非本文作者)