|
Boost : |
Subject: Re: [boost] [serialization] Memoryleak invoid_caster::recursive_register
From: Robert Ramey (ramey_at_[hidden])
Date: 2009-06-30 11:28:13
This create objects which register themselves in a global table. The table
and objects persist until the execution module ends. Some methods of
checking for memory leaks might check before the table
and it's members are destroyed so it might look like they are leaks - but
they're not. This can be seen
by setting a debugger break point on the destructor of voice_cast_shortcut.
Robert Ramey
Runar Undheim wrote:
> // implementation of void caster base class
> BOOST_SERIALIZATION_DECL(void)
> void_caster::recursive_register(bool includes_virtual_base) const {
> void_cast_detail::set_type & s
> =
> void_cast_detail::void_caster_registry::get_mutable_instance();
> s.insert(this);
>
> // generate all implied void_casts.
>
> void_cast_detail::set_type::const_iterator it;
> for(it = s.begin(); it != s.end(); ++it){
> if(m_derived == (*it)->m_base)
> new void_caster_shortcut(
> (*it)->m_derived,
> m_base,
> m_difference + (*it)->m_difference,
> includes_virtual_base
> );
> if((*it)->m_derived == m_base)
> new void_caster_shortcut(
> m_derived,
> (*it)->m_base,
> m_difference + (*it)->m_difference,
> includes_virtual_base
> );
> }
> }
>
> The new void_caster_shortcut in void_caster::recursive_register give
> memory leak. The leak is only at startup of program, so it doesn't eat
> any memory while the program is running. But it makes it difficult to
> find other memory leaks when the program contain several leaks you
> don't care about.
>
> - Runar
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk