Господа, ниже представлена рекурсивная функция для добавления нового элемента в конец списка. Категорически отказывается работать (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)
- Форум Обещаный код с ошибкой __int_malloc (2004)
- Форум CUDA програмирование, bicgstap алгоритм не могу найти ошибку в изпользовании cublas и cusparse библиотек / С++ (2014)
- Форум Разработка своего shell'a (2012)
- Форум *** glibc detected *** free(): invalid next size (fast): 0x0804a028 *** (2005)
- Форум Простой вопрос знатокам в СИ (2015)
- Форум FUSE Development (2012)
- Форум Система обмена файлами.Сокеты,linux. (2014)
- Форум Копирование фрагмента файла - учебная программа (2015)
- Форум g++ expects argument (2013)