namespace; include rt; // a uniquely owned free returns the block to its size class at once. // a plain free still quarantines; that contract lives in quarantine.zc. struct node { node* c; int n; }; unchecked fn addr(p) { return p; } fn main() { let base = rt.live_objects(), p, q, slot; node* a; node* b; p = rt.new(4); a = rt.new(node); b = rt.new(node); p[0] = 111; a.c = b; a.n = 1; b.c = 0; b.n = 2; slot = addr(p); rt.free(d*p); q = rt.new(4); rt.free(d*a); rt.put_n(q == slot); rt.put_c(' '); rt.put_n(q[0]); rt.put_c(' '); rt.put_n(rt.live_objects() - base); rt.put_c(10); rt.free(d*q); return 0; }