1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
discard """
output: "MEM 0"
cmd: "nim c --gc:orc $file"
"""
type
Node = ref object of RootObj
le, ri: Node
name: char
proc edge(a, b: Node) =
if a.le == nil: a.le = b
else: a.ri = b
proc createNode(name: char): Node =
new result
result.name = name
#[
+---------+ +------+
| | | |
| A +----->+ <------+-------------+
+--+------+ | | | |
| | | | C |
| | R | | |
+--v------+ | | +-------------+
| | | | ^
| B <------+ | |
| | | +--------+
+---------+ | |
+------+
]#
proc main =
let a = createNode('A')
let b = createNode('B')
let r = createNode('R')
let c = createNode('C')
a.edge b
a.edge r
r.edge b
r.edge c
c.edge r
let mem = getOccupiedMem()
main()
GC_fullCollect()
echo "MEM ", getOccupiedMem() - mem
|