Cześć, może bardzo się rozpiszę, ale odpowiedz jest na jedno zdanie.
Mianowicie zacząłem pisać swoje własne implementacje struktur danych(stos/kolejka/lista) i mam pytanie odnośnie zwalniania pamięci, już pokazuję o co chodzi.
void Kolejka::pop() { //funkcja usuwająca wezel struktury
if (head == 0) { //wiadomo, sprawdzamy czy aby nie jest pusta
cout << "Kolejka jest pusta." << endl;
}
else { //pytanie pojawia sie tutaj
Liczba* temp = head;//stworzylem wskaznik na pierwszy element struktury
head = temp->next; //tutaj zamieniam glowe kolejki na nastepny element
delete temp; //wg tego co znalazlem w google, to tak ma wygladac usuniecie
} //elementu wskazanego przez wskaznik temp
}
I teraz mam np. funkcję do wyświetlania elementów struktury, czy to zliczania elementow, obojetnie, pojawia sie to samo pytanie:
int Kolejka::count() { //funkcja do zliczania elementow
Liczba* temp = head; //tworzymy wskaznik na obiekt liczba
int n = 0;
while (temp) { //petla do zliczania elementow
n++;
temp = temp->next;
}
//delete temp; *DO TEJ LINIJKI ODWOLAM SIE NA NIZEJ
return n;
}
*(wracam do tej linijki z kodu) I teraz pojawia się moje pytanie, przecież utworzyliśmy wskaźnik pomocniczy (temp), żeby moc się "przejść" po elementach struktury i je zliczyć, no ale przecież on potem nie będzie potrzebny więc należałoby go usunąć, tak? Więc napisałem delete temp; ale tutaj mi coś zaczęło nie pasować, bo w funkcji pop, do usuwania, była taka sama linijka, delete temp; i ona usuwała element a nie wskaźnik(może tutaj źle myślę?). No ale spróbowałem dopisać te linijkę do funkcji count() i element się nie usuwa. Więc pytanie czy te zapisy działają poprawnie i ja szukam dziury w całym, czy rzeczywiście jest coś źle?