30/09/2018, 23:55

Segmentation fault. Help?

Các C pro giúp mình đoạn code này với:

#include <stdlib.h>
#include <string.h>

typedef struct ListElmt_ // Define a structure for linked list elements. 
{
	void *data;    
	struct ListElmt_  *next;
} ListElmt;


typedef struct List_ //define a structure for linked lists. 
{
	int size; //  the size of the linked list
	
	ListElmt *head; // the head element
	ListElmt *tail; // the tail elemtent
	
} List;

void list_init(List *l)
{
	l->size = 0;
	l->head = NULL;	
	l->tail = NULL;
}

int main()
{
	List *ls = NULL;
	list_init(ls);

	return 0;

}

Mình đã compile với -Werror, không có lỗi gì nhưng chạy là bị segmentation fault các pro ạ.

Mình lần rồi nhưng chưa tìm thấy chỗ nào, đành phải dùng trợ giúp từ cộng đồng.

Sáng mai, đoạn code đơn giản và đầy tự tin Và rồi… ăn ngay gáo nước lạnh

Pham Van Hai viết 02:10 ngày 01/10/2018

l->size = 0;

Lỗi là do bạn gán dữ liệu con trỏ NULL:

List *ls = NULL;

Fix: cấp phát bộ nhớ cho biến ls
ls = (List *)malloc(sizeof(List))

anon45952904 viết 01:59 ngày 01/10/2018

Ò yes!

Mình gặp quả này rồi mà ko ghi vào đầu đc.

Mà có vẻ như thế này mới đúng chứ nhỉ?
ls = malloc(sizeof(List ))

Pete Houston viết 01:55 ngày 01/10/2018

Mà có vẻ như thế này mới đúng chứ nhỉ?
ls = malloc(sizeof(List ))

sai loe loét chứ đúng cái gì. Bạn @Pham_Van_Hai chỉ đúng rồi đấy.

Pham Van Hai viết 02:07 ngày 01/10/2018

Mình có sai một chỗ, đã fix.

anon45952904 viết 01:57 ngày 01/10/2018

Rồi . Coi như óc mình chưa bỏ đi.

Bài liên quan
0