• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Funkcja malloc zgłasza segmentation fault ,gdy próbuję alokować prostą strukturę

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
200 wizyt
pytanie zadane 24 sierpnia 2020 w C i C++ przez DamianW Bywalec (2,080 p.)

Witam. Musiałem zaprojektować prymitywną forward_list w języku C.Mam problem z następującym kodem, który reprezentuje:

typedef struct q_node
{
   int key;
   struct q_node* next;
}q_node;

typedef struct queue
{
    size_t size;
    struct q_node* tail;
    struct q_node* head;
}queue;

q_node* make_node(int new_key)
{
   /* TUTAJ ZGŁASZA WYJĄTEK*/ q_node* new_node = malloc(sizeof (struct q_node));
    new_node->key = new_key;
    new_node->next = NULL;
    return new_node;
}

void queue_push_back(struct queue* queue,int new_key)
{
    //wywołuje funkcję make_node()
}

Problem polega na tym ,że funkcja malloc zgłasza wyjątek segmentation fault ,w funkcji make_node () ( sprawdzałęm w debugerze) . Ktoś wie dlaczego może tak być ? Z góry dziękuję za pomoc :D

komentarz 24 sierpnia 2020 przez j23 Mędrzec (195,240 p.)

Problem jest raczej w queue_push_back, której zawartości nie pokazałeś.

komentarz 24 sierpnia 2020 przez DamianW Bywalec (2,080 p.)
proszę bardzo

void queue_push_back(struct queue* queue,int new_key)
{
    if(queue->size == 0)
    {
        q_node* new_node = make_node(new_key);
        queue->head = new_node;
        queue->tail = new_node;
    }
    else
    {
        q_node* new_node = make_node(new_key);
        queue->head->next = new_node;
        queue->head = new_node;
    }
    ++queue->size;
}

 

komentarz 24 sierpnia 2020 przez j23 Mędrzec (195,240 p.)

A nie tak w else powinno być:

q_node* new_node = make_node(new_key);
new_node->next = queue->head;
queue->head = new_node;

?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 314 wizyt
pytanie zadane 17 lutego 2022 w C i C++ przez Yaqbek Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 1,223 wizyt
0 głosów
1 odpowiedź 198 wizyt
pytanie zadane 1 grudnia 2019 w C i C++ przez Aleksandra01 Użytkownik (530 p.)

93,436 zapytań

142,431 odpowiedzi

322,669 komentarzy

62,801 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...