a few things of note:
1. you're printing the elements after you free the memory, that's not
gonna work
2. use (iterator = g_slist_next(iterator)) to increment; do not refer to
(iterator->next) directly
3. after you've freed the list data elements, you need to free the list
itself as well:
g_slist_free(items_list1);
4. and then reset the list pointer to NULL:
items_list1 = NULL
5. if your list is large, use g_slist_prepend() to add to the list, and
then g_slist_reverse() after it's been filled. This is much quicker.
6. convert all your str() functions to glib equivalents: g_strdup(),
g_strdup_printf(), g_strconcat(), etc... This way, you can create your
item_name data element in one statement (making it much easier to read
and understand), instead of all the hoops you're jumping through at the
moment.
richard
1. // Clean up
2. for(iterator = items_list1; iterator != NULL; iterator=
iterator->next)
3. {
4. free(((item_data*)iterator->data)->item_name);
5. g_free(iterator->data);
6. }
7.
8. for(iterator = items_list1; iterator != NULL; iterator=
iterator->next)
9. print_item((item_data*)iterator->data);
On Sun, Sep 2, 2012 at 9:44 AM, Mostafa Alshrief <[email protected]
> wrote:
> hi there,
>
> i have a question about allocating/deallocating memory using glib
> i have created this simple app to demonstrate :
> http://pastebin.com/kVncSgxh
> the app creates a simple GSList list and fill it with a data structure of
> type item_data
>
> at line 65 i use a loop to free mem allocated by malloc() and by g_new();
> i really need to know if i'm allocating/deallocating memory in the correct
> way
>
> _______________________________________________
> gtk-list mailing list
> [email protected]
> https://mail.gnome.org/mailman/listinfo/gtk-list
>
_______________________________________________
gtk-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtk-list