your record is pointer. you have to allocate structure record and then use pointer to it. struct { guint index; gchar *data; } x, *record; record = &x; record->data = "blabla1" albert pala ====== cut here =============== #include <stdio.h> #include <string.h> #include <glib.h> int main(int argc, char **argv) { GList *dlist = NULL, *list = NULL; guint length,i; struct { guint index; gchar *data; } *record; record->data = g_malloc(strlen("Lucas")+1); g_strlcpy(record->data,"Lucas",strlen("Lucas")+1); dlist = g_list_append(dlist, record); record->data = g_malloc(strlen("Brasilino")+1); g_strlcpy(record->data,"Brasilino", strlen("Brasilino")+1); dlist = g_list_append(dlist, record); length = g_list_length(dlist); g_printf("%d \n",length); record = NULL; list = g_list_first(dlist); while(list) { record = list->data; g_print("%s\n",record->data); list = list->next; } }