|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
15.4.2017, 22:26 | #1 |
Član
Član od: 13.3.2017.
Poruke: 55
Zahvalnice: 30
Zahvaljeno 3 puta na 3 poruka
|
C - oslobadjanje alocirane memorije
Interesuje me kako je nadjbolje osloboditi memoriju zauzetu na sledeći način:
U main() funkciji imam pokazivač i alocirao sam memoriju za njega ovako: Kod:
double *p; p = calloc(n, sizeof(double)); Zelim da napravim funkciju koja vraća pokazivač na niz. Kod:
double* funkcija(int n) { double *p; p = calloc(n, sizeof(double)); // obrada ... return p; } Hvala |
15.4.2017, 22:58 | #2 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.163
Zahvalnice: 2.081
Zahvaljeno 4.922 puta na 2.858 poruka
|
Re: C - oslobadjanje alocirane memorije
Kada si uradio "calloc(n, sizeof(double))", memorijski alokator operativnog sistema je to razumeo kao zahtev za alokaciju kontinualnog bloka memorije dužine n * sizeof(double), to jest efekat je potpuno isti kao da si uradio "calloc(1, n * sizeof(double))". Dakle memoriju oslobađaš sa "free(adresa koju je vratio calloc)". Nije bitno što toj adresi u samoj funkciji pristupaš preko "p", a rezultat funkcije ćeš upisati u pokazivač pod nekim drugim imenom - bitna je sama adresa koju ti pokazivači sadrže. Ovo je potpuno legitiman kod:
Kod:
double *a = funkcija(n); free(a); |
Sledeći korisnik se zahvaljuje korisniku voodoo_ na korisnoj poruci: | ||
NovaNada (16.4.2017) |
16.4.2017, 9:06 | #3 |
Član
Član od: 13.3.2017.
Poruke: 55
Zahvalnice: 30
Zahvaljeno 3 puta na 3 poruka
|
Re: C - oslobadjanje alocirane memorije
Hvala voodoo !
Sad mi je potpuno jasno kako treba da rešim problem. |
16.4.2017, 10:14 | #4 |
Starosedelac
Član od: 23.2.2006.
Lokacija: Tamo gde su kuće od čokolade i prozori od marmelade....
Poruke: 1.579
Zahvalnice: 195
Zahvaljeno 301 puta na 171 poruka
|
Re: C - oslobadjanje alocirane memorije
Mala digresija, stekni naviku da kada oslobađaš memoriju da odmah setuješ pointer na NULL. Posebno ako budeš koristio free() negde pre kraja programa, može da ti uštedi dosta vremena i živaca xD
Kod:
free(p); p = NULL; |
Sledeći korisnik se zahvaljuje korisniku Teva na korisnoj poruci: | ||
NovaNada (16.4.2017) |
16.4.2017, 10:35 | #5 |
Član
Član od: 13.3.2017.
Poruke: 55
Zahvalnice: 30
Zahvaljeno 3 puta na 3 poruka
|
Re: C - oslobadjanje alocirane memorije
^Prihvaćen savet.
Šteta što čovek nema gde da pročita ovakve savete i dobre prakse, nego mora ili sam da otkriva ili ako ima sreće, kao ja sada, da mu neko otvori oči. |
Bookmarks sajtovi |
Alatke vezane za temu | |
Vrste prikaza | |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Kupovina RAM memorije | ZvOnKo650 | Osnovne komponente | 1 | 30.12.2009 1:12 |
antivirus na komp sa malo memorije? | neko_drugi | Zaštita | 19 | 30.11.2009 9:42 |
Rizik u slučaju nekompatibilnosti memorije | M1los | Osnovne komponente | 14 | 15.12.2007 23:33 |
Gubitak memorije na MP3 Stick-u | Rokki | Foto i audio/video | 2 | 26.2.2006 22:31 |
Overclock DDR memorije! | sasha vukelic | Overklok | 13 | 28.12.2005 16:11 |