malloc, C, односвязный список

Есть интовый массив. Есть функция создания односвязного списка из этого массива и ней есть цикл for в котором используется malloc:

        struct item *first = NULL, *last = NULL, *tmp;

        for(int i = 0; i < len; i++){
                tmp = malloc(sizeof(*tmp));
                tmp->data = arr[i];
                tmp->next = NULL;
                if(last){
                        last->next = tmp;
                        last = last->next;
                } else
                        first = last = tmp;
        }

Функция возвращает указатель на этот список. Вопрос в следующем: Нужно ли как-то после этого чистить память с помощью free(или после завершения программы память сама освободится) и если да, то как это делать грамотно?

Можно, конечно, через цикл, но есть ли иной способ?


Ответы (0 шт):