Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > GTK и Valgrind -> утечка памяти!


Автор: Vicul 7.9.2010, 17:37
Никто не знает, как их подружить?

Память течет здесь

Код

g_type_init ();


vAlgrind показывает:

Код

==6469== 70 bytes in 1 blocks are possibly lost in loss record 164 of 243
==6469==    at 0x4025FCB: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==6469==    by 0x43D0969: g_malloc0 (in /usr/lib/libglib-2.0.so.0.2200.4)
==6469==    by 0x437068A: ??? (in /usr/lib/libgobject-2.0.so.0.2200.4)
==6469==    by 0x437095C: g_type_init_with_debug_flags (in /usr/lib/libgobject-2.0.so.0.2200.4)
==6469==    by 0x43709EE: g_type_init (in /usr/lib/libgobject-2.0.so.0.2200.4)
==6469==    by 0x8048E85: ActiveScreensaver() 


Любые идеи!!!

Автор: JustHuman 7.9.2010, 19:24
Valgrind показывает откуда выделилась потерянная память. А где её потеряли увы без исходников никто не скажет.

Автор: Vicul 7.9.2010, 20:11
Вот исходник

Код

  DBusGConnection *connection;
  GError *error = NULL;
  char strTmp[MAX_PATH] = {0};
  DBusGProxy *proxy;
  gboolean boolret;
  
  g_type_init ();
  connection = dbus_g_bus_get (DBUS_BUS_SESSION,
                               &error);
  if (connection == NULL)
    {
      sprintf(strTmp, "Error: %s", dbus_g_error_get_name(error));
      g_error_free (error);
      LogInfo(strTmp);
      return;
    }
  proxy = dbus_g_proxy_new_for_name (connection,
                                     "org.gnome.ScreenSaver",
                                     "/org/gnome/ScreenSaver",
                                     "org.gnome.ScreenSaver");

  if (!dbus_g_proxy_call (proxy, "GetActive", &error,
              G_TYPE_INVALID,
                          G_TYPE_BOOLEAN, &boolret,
              G_TYPE_INVALID))
    {
      sprintf(strTmp, "Error: %s", dbus_g_error_get_name(error));
      g_error_free (error);
      LogInfo(strTmp);
      goto End;
    }
  if (boolret)
    {
      if (!dbus_g_proxy_call (proxy, "SimulateUserActivity", &error, G_TYPE_INVALID))
    {
      sprintf(strTmp, "Error: %s", dbus_g_error_get_name(error));
      g_error_free (error);
      LogInfo(strTmp);
    }
    }

 End:
  g_object_unref (proxy);

Автор: JustHuman 7.9.2010, 20:41
Вот вроде бы исчерпывающий ответ http://osdir.com/ml/gtk-list/2009-07/msg00049.html

Автор: Vicul 8.9.2010, 07:47
Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)