In the program below, 'i' is treated as not escaping, yet it does escape. This can
cause crashes and memory corruption.
package main
import (
"fmt"
)
type T struct {
v *int
}
func foo(ch chan *T) {
i := 42
t := T{&i}
defer func() {
ch <- &t
}()
}
func main() {
ch := make(chan *T, 2)
foo(ch)
foo(ch)
close(ch)
for t := range ch {
fmt.Printf("%v %v\n", t, *t.v)
}
}
The text was updated successfully, but these errors were encountered:
The text was updated successfully, but these errors were encountered: