[Marble-devel] Leak in GeoDataTrack?
Josh Knox
jknox at lauferwind.com
Tue May 6 20:28:02 UTC 2014
Hi,
While scouring my code for leaks, using valgrind, I found that creation of GeoDataTracks were dynamically allocating their GeoDataTrackPrivate *d;
I use alot of GeoDataTracks so this seems like a good thing to clean up.
The GeoDataTrack constructor simply does:
GeoDataTrack::GeoDataTrack()
: d( new GeoDataTrackPrivate() )
{
}
Unfortunately there's no destructor to clean this up, so it leaks. I figure either clean it up in a destructor or wrap it in a "smart" pointer.
This test program demonstrates the issue when run under valgrind.
#include <marble/GeoDataTrack.h>
int main(int argc, char** argv) {
Marble::GeoDataTrack foo; // A stack allocation leaks memory
Marble::GeoDataTrack* bar = new Marble::GeoDataTrack();
delete bar; // leaks even if we delete it.
};
Valgrind reports this:
==5264== HEAP SUMMARY:
==5264== in use at exit: 10,182 bytes in 499 blocks
==5264== total heap usage: 2,169 allocs, 1,670 frees, 145,104 bytes allocated
==5264==
==5264== 320 (72 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 498 of 499
==5264== at 0x4C2B1C7: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5264== by 0x5D94C9B: Marble::GeoDataTrack::GeoDataTrack() (GeoDataTrack.cpp:56)
==5264== by 0x108E3D: main (testGeoDataTrack.cpp:6)
==5264==
==5264== 320 (72 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 499 of 499
==5264== at 0x4C2B1C7: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5264== by 0x5D94C9B: Marble::GeoDataTrack::GeoDataTrack() (GeoDataTrack.cpp:56)
==5264== by 0x108E52: main (testGeoDataTrack.cpp:8)
==5264==
==5264== LEAK SUMMARY:
==5264== definitely lost: 144 bytes in 2 blocks
==5264== indirectly lost: 496 bytes in 16 blocks
Am I missing something or is this a bug? Is this addressed on a development branch? Should I send a patch if I fix it on my end?
Thanks!
Josh
More information about the Marble-devel
mailing list