0

Windows 32 ビット用の最後のオールインワン バンドル GTK+ をインストールしました。

関数に問題がありますgtk_label_set_text。再帰的に呼び出されるとメモリリークが発生します

以下にコード例を示します。20秒ごとに約1Mbのメモリリークが発生します

#include <gtk/gtk.h>

gboolean update_label(gpointer);

int main(int argc, char ** argv)
{
    GtkWidget *window;
    GtkWidget *label = NULL;
    gtk_init(&argc, &argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    label = gtk_label_new(NULL);
    gtk_container_add(GTK_CONTAINER(window),label);

    gtk_widget_show_all(window);
    g_timeout_add(10,(GtkFunction)update_label,label);

    gtk_main();
    return 0;
}

gboolean update_label(gpointer data)
{
    GtkWidget *label = data;
    gchar tmpbuf[100];
    sprintf(tmpbuf , "Random text %i\n",rand());
    gtk_label_set_text(GTK_LABEL(label),tmpbuf);

   return TRUE;
}

このコードは、ラベル付きのウィンドウを作成し、10 ミリ秒ごとに更新します。誰かが私を助けることができますか?GTK+ ライブラリまたはコードに何か問題がありますか? ありがとう

4

1 に答える 1

0

これは、おそらくgtk_widget_queue_draw の Windows 7 での GTK の重複したメモリ リークです。使用している GTK のバージョンは何ですか?

于 2013-05-29T21:37:57.830 に答える