Re: userdata as table keys
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: userdata as table keys
- From: Matt Campbell <mattc@...>
- Date: 2007年1月08日 15:32:03 -0600
Erik Cassel wrote:
Don't forget to remove the key-value pair after the COM object is gone... or
you'll start to leak registry memory. Does your usedata's destructor clean
up its own registry entry?
That's not necessary. As I attempted to explain earlier, the userdata
references aren't stored directly in the registry, but in a table
referenced by the registry. The table which references the userdata has
a metatable, and that metatable's __mode value is "v", so the values are
weak references; the garbage collector will do the necessary cleanup
itself; my __gc metamethod only has to release the wrapped COM object.
See the Weak Tables chapter in _Programming in Lua_ (http://lua.org/pil/).
I hope this helps.
--
Matt Campbell
Lead Programmer
Serotek Corporation
www.freedombox.info
"The Accessibility Anywhere People"