Во-первых, да, вы можете «увидеть» содержимое first->next
, когда функция вернется. node->next
- это значение в структуре, на которое указывает node
, что указывает на то же место, что и first
. При передаче указателя first
по значению копируется только сам указатель, а не вся структура, на которую он указывает. Другими словами, *first
в main
- это те же данные, что и *node
в addEditNode
(не копия), просто каждая функция имеет другой указатель (один называется * 1012). * и тот, который называется node
), который указывает на эту единственную структуру.
Во-вторых, да, вы также должны освободить node->next
, иначе у вас будет утечка. Когда вы освобождаете указатель на структуру, он не рекурсивно освобождает указатели, которые являются членами этой структуры.
Однако я не вижу в этом коде ничего неправильного или способного вызвать ошибку сегментации (утечка не вызовет ошибки сегмента).