soku11 pisze:czy wywolujac kolejne malloc nie przydzieli mi pamieci zuzytej na wczesiejsza liste??
Nie, dopóki nie zwolnisz pamięci, obszar będzie oznaczony jako zajęty i kolejne alokacje będą przypisywane do wolnego obszaru.
soku11 pisze:
Czy jesli wskaznik na poczatek listy uzyje do ponownej allokacji pamieci, to czy nie zginie mi zawartosc tej wczesniejszej listy
Jest to możliwe tzn możemy utracić dostęp do obszaru, same dane będą bezpieczne
Jeżeli zmienna początek wskazuje na pierwszy element listy, to nie powinno się modyfikować jej wartości.
Przeanalizujmy Twój kod
// start - wskazuje na początek listy
struct lista *tmp=start; // wskaźnik tmp wskazuje na ten sam obszar co star
start=(struct lista*)malloc(sizeof(struct lista)); // zmienna start wskazuje teraz na nowy element
start->pole1=1; // przypisanie wartości do nowego dodanego elentu
...
tmp = start; // zmienna tmp przyjmuje teraz wartość na nowo dodany element więc jeżeli nie mamy gdzieś zapamiętanego wskaźnika na początek listy to straciliśmy do niego dostęp.