Hi All, I am trying to debug why a byte slice is escaping in my program. I have a small reproducible example here:
% cat escape.go package main func main() { x := make([]byte, 5) y := new([]byte) *y = x nothing((*y)[3]) } func nothing(b byte) {} % go tool compile -m -m -l escape.go escape.go:4:11: make([]byte, 5) escapes to heap: escape.go:4:11: flow: x = &{storage for make([]byte, 5)}: escape.go:4:11: from make([]byte, 5) (spill) at escape.go:4:11 escape.go:4:11: from x := make([]byte, 5) (assign) at escape.go:4:4 escape.go:4:11: flow: {heap} = x: escape.go:4:11: from *y = x (assign) at escape.go:6:5 escape.go:4:11: make([]byte, 5) escapes to heap escape.go:5:10: new([]byte) does not escape It seems to me like neither x nor it's backing array should escape, but I'm having trouble figuring out why it's flagged as escaping from the debug output. % go version go version go1.14 darwin/amd64 Any help would be appreciated. Ethan -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/4150346f-5b2f-4dab-852f-5b61315921ff%40googlegroups.com.