Luabind class class task (memory leak)

Using luabind 0.81

A simple test to illustrate the problem:

1)

class 'A'
function A:__init()
   print('A init\n')
end
function A:__finalize()
   print('A finalize\n')
end

do
   local obj = A()
end
collectgarbage("collect")

Conclusion:
A init
Finalization

2)

class 'A'
function A:__init()
   print('A init\n')
end
function A:__finalize()
   print('A finalize\n')
end

class 'B' (A)
function B:__init()
   A.__init(self)
   print('B init\n')
end
function B:__finalize()
   print('B finalize\n')
end

do
   local obj = B()
end
collectgarbage('collect')

Conclusion:
A init
B init

Problem: A class with a parent is not deleted when garbage collection.

How to solve this problem? Thank.

+1
source share
1 answer

See Saving a lua class with a parent in a luabind :: object . This is the same problem. The instance Bremains in the "super" upvalue.

super nil collectgarbage() :

class 'A'
function A:__init()
   print('A init\n')
end
function A:__finalize()
   print('A finalize\n')
end

class 'B' (A)
function B:__init()
   A.__init(self)
   print('B init\n')
end
function B:__finalize()
   print('B finalize\n')
end

do
   local obj = B()
   super = nil
end
collectgarbage('collect')
+3

Source: https://habr.com/ru/post/1726238/


All Articles