Gå til innhold

Hjelp med segmentation fault


Anbefalte innlegg

Hei. Driver å lager en liste-implementasjon i C, og sliter litt med noen pekere. Er egentlig ikke noe mer å fortelle, bare vise dere koden:

 

main.c

#include <stdio.h>
#include "datastruct.h"

LINKED_LIST *list;

int main(void) {
int i = 23, j = 2424, n = -12;
linked_list_addLast(&i, list);
return 0;
}

 

datastruct.h

/* Structures and functions for linked lists */
typedef struct linked_list {
struct list_node *head;
struct list_node *tail;
int size;
} LINKED_LIST;

typedef struct list_node {
struct list_node *next;
void *data;
} LL_NODE;

void linked_list_addLast(void *data, LINKED_LIST *list);

 

linked_list.c

#include <stdio.h>
#include "datastruct.h"

void linked_list_addLast(void *data, LINKED_LIST *list) {
LL_NODE *node;
node->data = data;

if(list->size == 0) {
	list->head = node;
	list->tail = node;
	list->size++;
} else {
	list->tail->next = node;
	list->tail = node;
	list->size++;
}
}

 

Er veldig fersk i C, så ikke mobb hvis feilen er dum :tease:

 

På forhånd takk!

Endret av kjey
Lenke til kommentar
Videoannonse
Annonse

Hvorfor må jeg allokere minne til en node? Er det fordi det er en datastruktur og at det er slik man må initialiserer den? Og hva med linked_list i main.c? Må man ikke allokere til den også?

Endret av kjey
Lenke til kommentar

Ja sant det! Fant også ut at allokeringen måtte skje inne i funksjonene... rart :hmm: Men uansett får jeg opp noen warnings, det virker som programmet fungerer, men:

 

gcc main.c linked_list.c -o Run
main.c: In function ‘main’:
main.c:7: warning: incompatible implicit declaration of built-in function 
‘malloc’
linked_list.c: In function ‘linked_list_addLast’:
linked_list.c:6: warning: incompatible implicit declaration of built-in 
function ‘malloc’

 

Er disse noe å bry seg om?

Endret av kjey
Lenke til kommentar
Ja sant det! Fant også ut at allokeringen måtte skje inne i funksjonene... rart :hmm: Men uansett får jeg opp noen warnings, det virker som programmet fungerer, men:

 

gcc main.c linked_list.c -o Run
main.c: In function ‘main’:
main.c:7: warning: incompatible implicit declaration of built-in function 
‘malloc’
linked_list.c: In function ‘linked_list_addLast’:
linked_list.c:6: warning: incompatible implicit declaration of built-in 
function ‘malloc’

 

Er disse noe å bry seg om?

 

Hiv inn en #include <stdlib.h> du ;)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...