У меня просто была похожая проблема, в моем случае она была связана с указателями в моей структуре данных связанного списка. Когда я динамически создал новый список без инициализации всех указателей внутри структуры, моя программа вылетает за пределы GDB
Вот мои оригинальные структуры данных:
typedef struct linked_list {
node *head;
node *tail;
} list;
typedef struct list_node {
char *string;
struct list_node *next;
} node;
Когда я создал новый "экземпляр" list
, указав его head
и tail
, программа вылетала за пределы DGB
:
list *createList(void) {
list *newList = (list *) malloc(sizeof(list));
if (newList == NULL) return;
return newList;
}
Все стало нормально работать после того, как я изменил свою функцию createList
на эту:
list *createList(void) {
list *newList = (list *) malloc(sizeof(list));
if (newList == NULL) return;
newList->head = (node *) 0;
newList->tail = (node *) 0;
return newList;
}
Надеюсь, это может кому-то помочь в случае чего-то похожего на мой пример с неинициализированными указателями.