Skip to content

Instantly share code, notes, and snippets.

@avnik
Created June 17, 2014 20:46
Show Gist options
  • Save avnik/d79f0481ad177f5928cc to your computer and use it in GitHub Desktop.
Save avnik/d79f0481ad177f5928cc to your computer and use it in GitHub Desktop.
package main
import "runtime"
import "runtime/debug"
type inner struct {
data int
}
type outer struct {
*inner
}
func f1() *inner {
i := &inner{data: 42}
runtime.SetFinalizer(i, func(ii *inner) {
_ = ii
print("inner finalizer")
})
return i
}
func f2() *outer {
o := &outer{f1()}
runtime.SetFinalizer(o, func(oo *outer) {
_ = oo
print("outer finalizer")
})
return o
}
func f3() {
x := f2()
print(x.inner.data)
x = nil
}
func main() {
f3()
debug.FreeOSMemory()
debug.FreeOSMemory()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment