Finalizer executed too often
Posted: 6 Mar 2016 17:34
Hello Thomas,
please check below code (in VIP 7.5.0.2).
In my test the finalizer was executed more often than the object had been created. It has output
in 32-bit mode:
and in 64-bit mode:
Regards
Martin
please check below code (in VIP 7.5.0.2).
Code: Select all
interface myObj
end interface myObj
%---
class myObj : myObj
constructors
new : (integer Num).
end class myObj
%---
implement myObj
facts
num : integer.
clauses
new(Num) :-
num := Num,
stdIo::write("created object ", num, "\n").
clauses
finalize() :-
stdIo::write("finalized object ", num, "\n").
end implement myObj
%===
implement main
class predicates
createObject_nd : () nondeterm.
clauses
createObject_nd():-
N = std::cIterate(3),
_ = myObj::new(N).
clauses
run() :-
createObject_nd(),
fail.
run().
end implement main
in 32-bit mode:
Code: Select all
created object 0
created object 1
created object 2
finalized object 1
finalized object 0
finalized object 1
finalized object 2
Code: Select all
created object 0
created object 1
created object 2
finalized object 2
finalized object 1
finalized object 0
finalized object 0
Martin