Memory leaks



Strictly speaking I'm talking about a gtkmm app but since gtkmm is mostly just a wrapper around gtk+ maybe I 
should start here.

Some time ago I built a small gtkmm app using gtk-win32 and Microsoft Visual C++.  MSVC has some pretty 
sophisticated leak detection tools and in the past, I've tended to turn them on for my MSVC builds.  So a 
week or two ago I enabled leak detection for my gtkmm app and was a bit disappointed at how much memory was 
leaking.

At first I assumed the leaks would be my fault but a week of inspecting my code revealed nothing.  Eventually 
I boiled the situation down to the following minimal code sample:-

#include <gtkmm.h>

int main (int argc, char *argv[])
{
      Gtk::Main *app = new Gtk::Main (&argc, &argv);

      delete app;

      return 0;
}

The above code causes hundreds of memory leaks.  I'd be happy to try and trace them but I know that gtk+ has 
been built by better programmers than me - so if memory is leaking (certainly on this scale) it's probably 
for a good reason.  This code results in identical leaks:-

#include <gtkmm.h>

int main (int argc, char *argv[])
{
      Gtk::Main  app(&argc, &argv);

      return 0;
}

In both cases, not creating the Gtk::Main object completely eliminates the memory leaks, so I can be 
reasonably confident they're coming from gtk+ or gtkmm.   If this comes as a big surprise to the gtk+ 
developers I'd be happy to take a closer look but I figured there might be some reason for the leaks that's 
already obvious to the development team but not to me.  I don't want to waste too much time on this if it's 
expected behaviour.

John


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]