Of course, I did find another reference that I didn't notice. Python reference works as expected .. hehe!
On Mon, Oct 25, 2010 at 7:35 PM, Simon W <simw...@gmail.com> wrote: > Hey again, > > I'm trying to implement a load / unload module functionallity. When I > delete the module in the __main__ dict the module's reference count is still > > 1. I've been trying to find if I reference it anywhere else in my code but > I can't find anything! When I did a check in vc++ debugger found something. > When I run this code: > > object obj = import(name.c_str()); > > *obj*'s *ob_refcnt* member is 2 when I check in the vc++ debugger. > Shouldn't it be 1? > > After that line, I put it in the __main__ dict like: > > mMainNamespace[ name.c_str() ] = obj; > > The reference count shows 4, as expected. > > When I'm entering my unload() function when I want to remove the module I > do like: > void unload() > { > object t = mMainNamespace[ name.c_str() ]; > // reference count in t is now 4 ? > > mMainNamespace[ name.c_str() ].del(); // I delete but it's not > unloaded properly because it's still referenced somewhere .. > } > > What does import() do? It must save some reference somewhere? > >
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig