Как освободить память выделенную в подпрограмме - C (СИ)
Формулировка задачи:
Имеется функция создания элемента списка
DrMemory ругается на утечки памяти при ее вызове
подскажите где нужно написать free(elem); чтобы утечек памяти не было
struct list_int* create_elem(int num, int sqnum) { struct list_int *elem = malloc(sizeof(struct list_int)); if (elem) { elem->dat.num = num; elem->dat.sqnum = sqnum; elem->next = NULL; } return elem; }
struct list_int *elem; //... while (1) { if (fscanf(f,"%d",&tmp)!=1) break; elem = create_elem(tmp,(tmp)*(tmp)); if (elem) { if (add_elem(&list, elem)==1) first= list; } } //...
Решение задачи: «Как освободить память выделенную в подпрограмме»
textual
Листинг программы
elem = NULL; while(1) { if (elem) free(elem); .... }
Объяснение кода листинга программы
elem
— это указатель на выделенную динамически память.- Если
elem
не равен NULL, то это означает, что память была успешно выделена и ее можно освободить. - Функция
free
освобождает память, на которую указывает указательelem
. - После вызова функции
free
указательelem
становится равным NULL. - Процесс повторяется до тех пор, пока не будет выделена новая память или не будет достигнуто условие окончания цикла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д