rezerwacja pamieci a tablice

0

Przeczytalem troche o rezerwowaniu pamieci dla tablic, i nie zrozumialem pewnej rzeczy oto przyklad kodu


 int rozmiar;
 float *tablica;
 
 rozmiar = 3;
 tablica = (float*) malloc(rozmiar * sizeof(*tablica));
 tablica[0] = 0.1;

a czytalem ze takie przydzielanie pamieci dla tablic pozwoli mi zmieniac raz okreslony rozmiar tablic, ale widze tylko takie przyklady ze rozmiar jest juz okreslony, tutaj np na 3 i rezerwuje potem pamiec dla tablicy o rozmiarze 3 indeksow, czyli gdzie tu mozliwosc zmiany jej rozmiaru ?

0

Pozwala Ci na to funkcja realloc, której jednak powinieneś używać z głową.

0

ahh zupelnie o niej zapomnialem, dzieki :)
A jak to jest z wyciekami pamieci, jesli zarezerwuje pamiec dla jakiejs tablicy w programie, zapomne jej uwolnic i skoncze dzialanie programu to po wyjsciu z programu ta pamiec dalej bedzie nie dostepna dla systemu az do zrestartowania pc ?

0

(C++) Jesli chcesz tablice, ktora moze zmieniac rozmiar to lepiej uzyc std::vector<typdanychWTablicy> niz samemu implementowac. Wystarczy dodac #include<vector>. Ktos juz to przemyslal pod katem szybkosci, funkcjonalnosci i nie powinno byc jakis prostych w znalezieniu bledow w implementacji. Wiecej: http://www.cplusplus.com/reference/vector/vector/

0

Po zakończeniu procesu (czyli działającego programu), sprzątają po nim mechanizmy systemu operacyjnego. Jeśli więc masz do czynienia z wyciekiem zasobów a system nie został zablokowany tym programem, to po jego zamknięciu (programu), wszystko wraca do normy.
Gorzej jest jeśli wyciek jest w programie bardzo długo działającym. Tu wycieki zasobów mogą skutkować często zajęciem wszystkich mocy obliczeniowych systemu i w konsekwencji.. czynią go niezdatnym do użycia :-/

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