Upload
dejan-marinkovic
View
49
Download
4
Embed Size (px)
DESCRIPTION
Tradicionalni način programiranja je u osnovi proceduralan, zasnovan na funkcionalnoj dekompoziciji korisničkog, a zatim i programskog zahteva. Pri tome, podaci (atributi) koji se obrađuju i operacije nad njima nisu grupisani zajedno u objektima kao što je to slučaj kod OBJEKTNO ORJENTISANOG PROGRAMIRANJA, već su razbacani po programu.Osnovna ideja objektno orjentisanog programiranja je da sve te podatke (atribute ) izvučemo iz navedenih struktura i grupišemo po klasama zajedno sa relevantnim operacijama (funkcijama). Klase zatim struktuiramo hijerarhijski, formirajući hijerarhijsko stablo klasa, vodeći računa da atributi i operacije koji su zajednički za sve klase budu na višim hijerarhijama, kako bi ih niže hijerarhije mogle koristiti preko mehanizma nasleđivanja
Citation preview
4/17/2011 1
DINAMIČKO DODELJIVANJE
MEMORIJE
• U programskom jeziku C moguće je izvršiti dinamičku dodelu memorijskog prostora, tako da se u toku izvršenja programa koristi samo potreban memorijski prostor. Statička dodela je neracionalna. Dinamičkim zauzimanjem memorijskog prostora, koje se obavlja tokom izvršenja programa, postiže se racionalno korišćenje memorije. U toku programa moguće je dodeljivanje i otkazivanje "rezervacije" memorijskog prostora.
4/17/2011 2
DINAMIČKO DODELJIVANJE MEMORIJE
• Za razliku od statičke dodele memorije gde se podacima pristupa preko imena promenljivih, dinamički pristup podacima vrši se uglavnom preko pokazivača. Sama dodela memorije obavlja se uz pomoćbibliotečnih funkcija koje se nalaze u <stdlib.h> kao što su:
• malloc(n) - funkcija dodeljuje memoriju od n bajtova;
• calloc(x,n) - dodeljuje memorijski prostor za x komponenti niza od n bajtova.
• free(p) - oslobađa prostor.
4/17/2011 3
malloc
• char *malloc( unssigned n)• gde n predstavlja broj bajtova koje izdvaja
funkcija.• Vreednost funkcije je znakovni pokazivač na
prvi bajt izdvojene oblasti. • Sledeći operatori funkcijom malloc izdvajaju
200 bajta• int *pint • pint = (int*) malloc(200)
4/17/2011 4
sizeof
• sizeof (izraz) - Vraća memorijski prostor neophodan za čuvanje izraza
• sizeof (T) - Vraća memorijski prostor neophodan za čuvanje vrednosti tipa T
4/17/2011 5
Statička dodela memorije
• Prilikom definicije niza od n članova u pokazivaču nizpočinje sa adresom u memoriji prvog elementa niza.
• int *niz;
• niz=calloc(n,sizeof(int));
• Na ovaj način dodeljivanja memorijskog prostora unapred je definisan broj članova niza n, tj veličina memorije na početku izvršenja program. Ovako se rezerviše n puta 2 (4) bajta jer je sizeof(int) 2 ili 4 u zavisnosti od računara.
4/17/2011 6
Dinamička dodelamemorije
• Kada je potrebno rezervisati prostor za pokazivač p sa još nedefinisanim sadrzajem treba napisati sledeće:p=(int*)malloc(sizeof(int);
4/17/2011 7
Dinamička dodela memorije
• Rezervisanom prostoru se može pristupiti samo preko pokazivača p naredbom:
• *p=5;
• na adresi 1253 dolazi vrednost 5.
4/17/2011 8
• Funkcija free oslobađa prostor u memoriji koji je prethodno rezervisan preko funkce malloc, a čija se adresa nalazila u pokazivaču p.
• free(p)• Vrednost koja se nalazi na toj adresi na
koju je upućivao pokazivač p ostaje , ali• joj se više ne može pristupiti
4/17/2011 9
• Vrednost koja se nalazi na toj adresi na koju je upućivao pokazivač p ostaje , ali
• joj se više ne može pristupiti