Господа, ниже представлена рекурсивная функция для добавления нового элемента в конец списка. Категорически отказывается работать (segfault), когда список не инициализирован, хотя соответствующий блок присутствует в функции.
...
list_t list = NULL;
...
void addtolist_r(list_t* mylist, const int value)
{
if( mylist == NULL ){
printf("addtolist_r entry\n");
printf("debug entry value = %d\n", value);
mylist = (list_t *)malloc(sizeof(mylist));
mylist->value = value;
mylist->next = NULL;
return;
}
if( mylist->next ) addtolist_r(mylist->next, value);
else
{
list_t* temp = (list_t *)malloc(sizeof(list_t));
temp->value = value;
temp->next = NULL;
mylist->next = temp;
}
}
...
addtolist_r(list, 42); // Не добавит, и не инициализирует список.
...
Хотя, если проинициализировать вручную, то все работает как надо. Подскажите плз. где здесь ошибка, и как ее правильно исправить? Предполагаю, что просто не выделяется память. Но почему?
Заранее спасибо.
Ответ на:
комментарий
от bbk123
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Глюк GCC? (2010)
- Форум Как узнать, сколько памяти доступно для выделения? (2005)
- Форум Простой вопрос насчёт списков для профессионалов . (2014)
- Форум Определение типа. Как реализовать? (2005)
- Форум getaddrinfo выдает нулевые адреса 0.0.0.0 (2022)
- Форум Быдлокод не быдлокод? (2014)
- Форум CUDA програмирование, bicgstap алгоритм не могу найти ошибку в изпользовании cublas и cusparse библиотек / С++ (2014)
- Форум Красно-чёрное дерево. Потеря связности блоков памяти (2024)
- Форум Ошибка в коде... (2006)
- Форум Обещаный код с ошибкой __int_malloc (2004)