2013-05-27 79 views
0

我已經安裝了末了-in-one軟件包GTK +適用於Windows 32位內存。GTK +:泄漏與gtk_label_set_text

我有功能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 ms更新一次。 有人可以幫我嗎? GTK +庫或我的代碼中是否有錯誤? 感謝

回答

0

這是最有可能重複Memory leak in GTK under Windows 7 in gtk_widget_queue_draw。你使用的是什麼版本的GTK?

+0

2.24.10, 我試過讀取錯誤685959,但這對我來說並不簡單。 據我所知,他們解決,它應該在14年2月24日的版本中解決,但我不明白如何與當前版本繞過它。 我GtkLabel的是一個計時器,我必須更新它每100毫秒。 你有什麼建議嗎? 謝謝。 – user2424147

+0

要麼你升級到2.24.14,要麼你使用[bug](https://bug685959.bugzilla-attachments.gnome.org/attachment.cgi?id=227018)重新構建GTK,並聲明爲對該bug負責。 – liberforce