const ( SIZE = 100 LOOPS = 10 ) type ( object = struct { x: [SIZE] int } ) fn make_dangling(init: int): ^^object { po := new(object) for i := 0; i < SIZE; i++ { po.x[i] = init } ppo := &po return ppo } fn check(po: ^object, init: int) { i := 0; for i < SIZE && po.x[i] == init { i++ } if i == SIZE { printf("%d Ok\n", init) } else { printf("%d Err\n", init) } } fn test1() { var oarr: [LOOPS] ^object for i := 0; i < LOOPS; i++ { ppo := make_dangling(i) oarr[i] = ppo^ check(oarr[i], i) } } fn test2() { var oarr: [LOOPS] ^object for i := 0; i < LOOPS; i++ { ppo := make_dangling(i) oarr[i] = ppo^ } for i := 0; i < LOOPS; i++ { check(oarr[i], i) } } fn main() { test1() test2() }