[C++-sig] Reference count on class object and import()
Simon W
simwarg at gmail.com
Mon Oct 25 19:35:24 CEST 2010
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?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cplusplus-sig/attachments/20101025/3dcbc748/attachment.html>
More information about the Cplusplus-sig
mailing list