为什么在尝试填充gtk_list时出现分段错误?

问题描述 投票:0回答:1

我想填充一个gtk2 gtk_list,我在一个函数中尝试这段代码:

GList (*List) = NULL;
GtkWidget (*ListBox) = gtk_list_new();
List = g_list_prepend(List, "List Item");
gtk_container_add(GTK_CONTAINER(Vbox), ListBox);
gtk_list_prepend_items(GTK_LIST(ListBox), List);

我确信我的功能没有任何问题。我得到了分段错误?为什么?我究竟能做些什么来解决它?

c segmentation-fault gtk2
1个回答
0
投票

您是segfaulting,因为您正在混合GList和已弃用的GtkList列表函数。

旧的GtkList已被弃用,与GList不同。注意:

GList (*List) = NULL;
...
List = g_list_prepend(List, "List Item");
/* now you switch to gtk_list_... and GtkList */
gtk_container_add(GTK_CONTAINER(Vbox), ListBox);
gtk_list_prepend_items(GTK_LIST(ListBox), List);

解决方案:只需使用GListg_list...函数,并避免弃用的GtkListgtk_list...对应物。 GListg_list...旨在取代早期的类型和功能,并在您的Gtk + 2应用程序中编译时无缝工作。

© www.soinside.com 2019 - 2024. All rights reserved.