[Gc] Memory leak located!
meessen at cppm.in2p3.fr
Sat Apr 26 14:49:33 PDT 2008
The leak has been located and was indeed in the STL containers. I
managed to find out how to use gc_allocator and modified all my containers.
std::vector< MyType >
must be written
std::vector< MyType, gc_allocator<MyType> >
same for list and deque.
For maps, instead of
std::map< KeyType, MyType >
one has to write
std::map< KeyType, MyType, KeyType,
gc_allocator<std::pair< const KeyType, MyType> > >
I confirm that the "public:" is very likely missing in
After changing this, the leak was strongly reduced but not eliminated. I
then located an additional leak with member variables of type string.
This becomes really tricky to solve because exceptions for instance do
have strings member variable. I tried defining my own string type
derived from basic_string and using gc_allocator but I get in trouble to
convert between std::string and this string type.
There might be a simpler way to solve this type of problem but I
couldn't find any.
More information about the Gc