package main

import "fmt"
import "unsafe"
import "runtime"

func f() **int {
    for false{} // avoid f being inlined.
    
    s := make([]byte, unsafe.Sizeof((*int)(nil))) // enough memory to hold 
a pointer
    pp := (**int)(unsafe.Pointer(&s[0]))
    x := 123
    *pp = &x
    return pp
}

var a []int

func main() {
    p := f()
    
    runtime.GC()
    
    // Is the memory allocated for x in f
    // guaranteed to be reachable at this moment?
    
    a = make([]int, 10)
    fmt.Println(**p, a)
}


-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to