Masz tablicę struktur, a nie wskaźników na struktury - zatem przypisanie MojaLista[2] = x;
powoduje skopiowanie tej struktury do tablicy - w tym momencie staje się ona niezależna od pierwotnej zmiennej.
Można by to luźno przetłumaczyć na:
memcpy(&MojaLista[2], &x, sizeof(x));
Tak więc robiąc następne przypisanie pod dany element tablicy, nie masz żadnego wycieku danych (w tym konkretnym przypadku).
Na przykładzie:
void test() {
// utworzenie struktury na stosie
Pole p;
// przypisanie danych do utworzonej struktury
p.ilosc = 10;
p.maks = 50;
// skopiowanie wszystkich danych struktury do tablicy
MojaLista[2] = p;
// (automatycznie) usunięcie struktury ze stosu, bilans pamięciowy na zero
}
Przy czym ten sam kod można by skrócić do:
void test() {
MojaLista[2].ilosc = 10;
MojaLIsta[2].maks = 10;
}