On Fri, May 27, 2005 at 11:50:44PM -0400, Kim Adil wrote: > I am trying to figure out how to use GArray containers. This gives me > rubbish in the printf output. I think it relates to how I am accessing > the data nce it is in the array rather than what is stored in the array. > Any comments and ideas would be appreciated.
It seem you'd better use GPtrArray to store the pointers, instead of GArray that stores the full structures. > GArray *garray; > > > garray = g_array_new (FALSE, FALSE, sizeof (Machine)); > for (i = 1; i < 10000; i++){ > Machine *newMach = machine_new(i,"trd11","d11","joe"); > g_array_append_val (garray, newMach); Two problems here: You pass a *pointer* to Machine, not a Machine, so a pointer is stored into garray. And newMach is probably never freed. You could copy the contents of newMach into the array, provived it's a constant-size structure with Machine *newMach = machine_new(i,"trd11","d11","joe"); Machine m = *newMach; g_array_append_val(garray, m); machine_free(newMach) But this is so obviously awkward (and incorrect, if Machine contains any dynamically allocated data) that you don't want to do this. Instead, use GPtrArray: GPtrArray *array; ... Machine *newMach = machine_new(...); g_ptr_array_add(array, newMach); Yeti -- A: Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing? A: Top-posting. Q: What is the most annoying thing on usenet and in e-mail? _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list