free() na liście list

0

Czesc,
Czy jesli mam liste której elementy zawierają wskaźniki do head i tail innej listy tzn jesli mam listę list.
I wywołam free() na tej pierwotnej liście to czy zwolni mi się cała pamieć?
Tzn czy zwolnia sie wszytkie elementy tych list zagnieżdżonych czy może zwolnią sie tylko elementy pierwszej listy pierotnej czyli m.in wskaźniki na heady i taile zagnieżdzonych ale juz same listy zagnieżdżone nie?

0

Każdy obiekt utworzony operatorem malloc musi być usunięty.

0
lion137 napisał(a):

Każdy obiekt utworzony operatorem malloc musi być usunięty.

no tak, własnie moje pytanie brzmi czy jeśli użyje free() na liście pierwotnej to czy listy zagnieżdżone tez zostaną osunięte?

(do tworzenia obydwu list używam malloc)

1

Nie zostaną usunięte, tyle razy ile Uzyłeś malloc, Musisz użyć free.

EDIT Inaczej, w C nie ma "garbage collectora", jeśli Usunąłeś referencję do jakiegoś obiektu (i nie ma już do niego więcej odwołań), to C dalej nie wie, że ma go usunąć - jest językiem z ręcznym zarządzaniem pamięcią.

2

Albo inaczej mówiąc: każdy adres zwrócony przez malloc musi być podany do funkcji free, jeśli chcesz po sobie "posprzątać".

1 użytkowników online, w tym zalogowanych: 0, gości: 1