open arrays documented in the manual
This commit is contained in:
parent
0bb3731422
commit
3d7abb958d
5 changed files with 38 additions and 6 deletions
|
|
@ -5,37 +5,51 @@ discard """
|
|||
type
|
||||
Module = object
|
||||
nodes*: seq[PNode]
|
||||
id: int
|
||||
|
||||
PModule = ref Module
|
||||
|
||||
Node = object
|
||||
owner*: PModule
|
||||
data*: array[0..200, char] # some fat to drain memory faster
|
||||
id: int
|
||||
|
||||
PNode = ref Node
|
||||
|
||||
var
|
||||
gid: int
|
||||
|
||||
when false:
|
||||
proc finalizeNode(x: PNode) =
|
||||
echo "node id: ", x.id
|
||||
proc finalizeModule(x: PModule) =
|
||||
echo "module id: ", x.id
|
||||
|
||||
proc newNode(owner: PModule): PNode =
|
||||
new(result)
|
||||
result.owner = owner
|
||||
inc gid
|
||||
result.id = gid
|
||||
|
||||
proc compileModule: PModule =
|
||||
new(result)
|
||||
result.nodes = @[]
|
||||
for i in 0..100:
|
||||
result.nodes.add newNode(result)
|
||||
inc gid
|
||||
result.id = gid
|
||||
|
||||
var gModuleCache: PModule
|
||||
|
||||
proc loop =
|
||||
for i in 0..10000:
|
||||
for i in 0..1000:
|
||||
gModuleCache = compileModule()
|
||||
gModuleCache = nil
|
||||
GC_fullCollect()
|
||||
|
||||
if getOccupiedMem() > 900_000:
|
||||
if getOccupiedMem() > 9_000_000:
|
||||
echo "still a leak! ", getOccupiedMem()
|
||||
quit(1)
|
||||
|
||||
echo "no leak: ", getOccupiedMem()
|
||||
|
||||
loop()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue