LINUX.ORG.RU

GSList: как получить доступ к данным?


0

0

Получаю следующее:

Program received signal SIGSEGV, Segmentation fault.
0x08048e6a in k () at test.c:18
18          printf("m = %d\n", A_CAST(l->data)->m);

Как правильно получить доступ к структуре в GSList? Где ошибка? Спасибо.

typedef struct
{
    int m;
} A;

void k()
{
#define A_CAST(l) ((A *)l)

    GSList* l = g_slist_alloc();
    g_assert(l != NULL);

    A* a = g_new(A, 1);
    a->m = 100;
    l = g_slist_append(l, a);
    printf("m = %d\n", A_CAST(l->data)->m);

    g_slist_foreach(l, (GFunc)g_free, NULL);
    g_slist_free(l);
}

int main(int argc, char** argv)
{
  k();

  return 0;
}


anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.