Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Funkcija koja vraca array?

[es] :: C/C++ programiranje :: Funkcija koja vraca array?

Strane: 1 2

[ Pregleda: 6958 | Odgovora: 32 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BinaryRuler

Član broj: 73518
Poruke: 189
77.46.183.*



+3 Profil

icon Re: Funkcija koja vraca array?09.06.2008. u 17:32 - pre 193 meseci
Burgos kada bi uradio delete [] niz; na kraju funkcije opet bi vratio NULL kroz parametar, ne zaboravi da se vraca samo pokazivac.

Goran Arandjelovic naravno da mora da bude na heap-u da bi prosao delete u prvoj liniji funkcije.

Code:

void Fu(int *x, int *n)
{
    delete []x;
    x = new int [10];
    for(int i=0; i<10; i++)
        x[i]=i+1;
    
    *n=10;


};

int _tmain(int argc, _TCHAR* argv[])
{
    int n;
   int* niz=new int[3];
   Fu(niz,&n);
    for(int i = 0; i < n; i++)
        std::cout << niz[i] << std::endl;
  delete[] niz; //recimo odavde mi vise nece trebati niz pa sam ga delet-ovao.
    system("PAUSE");
    return 0;
}

Da ne bi bilio leak-a kada se zavrsi koriscenje niz-a uradi se delete[] niz; kao sto sam naveo u kodu, i vise nema memory leak-a, bar ja nisam imao problema sa ovim. Ako postoji neko sigurnije resenje za ovaj problem dajte ga da zamenim ovo nesigurno resenje.

Sto ste napali moje resenje ;), nego, ako postoji drugo resenje zanima me.




[Ovu poruku je menjao SkyDiverX dana 09.06.2008. u 18:55 GMT+1]
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
217.169.209.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Funkcija koja vraca array?09.06.2008. u 18:20 - pre 193 meseci
.
Citat:
SkyDiverX: Burgos kada bi uradio delete [] niz; na kraju funkcije opet bi vratio NULL kroz parametar, ne zaboravi da se vraca samo pokazivac.

...

Da ne bi bilio leak-a kada se zavrsi koriscenje niz-a uradi se delete[] niz; kao sto sam naveo u kodu, i vise nema memory leak-a,


Čekaj, a sta sam tačno rekao?

Citat:
Burgos: Ponovo ti kažem da ovaj kod izaziva memory-leak. Nedostaje ti
Code:
delete []niz
pre izlaska iz glavne f-je.


Ponavljaš se, druže.



I šta da ti je ta funkcija u nekoj biblioteci? Lako je ovako videti da ne radi ako se radi sa memorijom u steku. Nijedno od ovih rešenja nije 100% sigurno, treba koristiti delete[] operator. Najsigurnije je koristiti stacic, ali samo ukoliko se radi o single-threaded aplikaciji


Citat:
Ako postoji neko sigurnije resenje za ovaj problem dajte ga da zamenim ovo nesigurno resenje.


Ti si rekao da je tvoje rešenje najsigurnije, samo me interesuje kako si to zaključio. I pritom zaboravio da dealociraš memoriju. Ali stvarno, zašto je najsigurnije, interesuje me?
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.dynamic.sbb.rs.



+9 Profil

icon Re: Funkcija koja vraca array?09.06.2008. u 18:23 - pre 193 meseci
@Burgos
Sada je u poslednjem primeru dealocirao niz...

@Sky
Ma ok je sasvim :)
Ne znam koliko ti je kompleksan kod, jer ovo je samo primer...
Samo vodi računa da se taj niz ne "prošeta" kroz desetak f-ja..objekata..itd, a da na kraju izgubiš iz vida ko je odgovoran za njegovo brisanje (kada najčešće dolazi do prevremenog brisanja i dereferenciranja dealociranog prostora). Od toga može vrlo često da boli glava...te je neka opšta preporuka da koristiš pametne pokazivače i STL, sem ako nemaš neke specifične potrebe.
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 895
*.demon.co.uk.



+4 Profil

icon Re: Funkcija koja vraca array?09.06.2008. u 18:49 - pre 193 meseci
Ali chovek je trazhio da mu funkcija vrati novi niz...
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
77.46.183.*



+3 Profil

icon Re: Funkcija koja vraca array?09.06.2008. u 19:27 - pre 193 meseci
Ovo sam napravio kada sam imao problem oko citanja sa Com porta. Zadatak je bio da moram sve da procitam sa Com porta u jednom cugu. Uredjaj na portu u normalnom rezimu rada nije slao vise od 255 bajtova, ali postojale su situacije (usled nekog kvara softverskog ili hardverskog) da prebaci taj opseg i nikada ne znas koliki ce biti.
Pa sam to resio tako sto da funkciju koja cita sa Com porta, napravio tako da moze da dealocira niz na principu koji sam napisao.
I to je radilo ok.

Kao sto NastyBoy rece:"Ali chovek je trazhio da mu funkcija vrati novi niz...".

Mozemo coveka da uplasimo ovakvim raspravama :), mada meni licno se svidja volim da cujem i druga misljenja.
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
217.169.209.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Funkcija koja vraca array?09.06.2008. u 19:32 - pre 193 meseci
@Goran,

obrisao je niz u poslednjem primeru, ali uz komentar:

Citat:
Burgos kada bi uradio delete [] niz; na kraju funkcije opet bi vratio NULL kroz parametar, ne zaboravi da se vraca samo pokazivac.


Kao da sam ja predlagao brisanje niza pre izlaska iz funkcije. Nit sam slep, niti glup :).
Citat:
Goran Arandjelovic:
Samo vodi računa da se taj niz ne "prošeta" kroz desetak f-ja..objekata..itd, a da na kraju izgubiš iz vida ko je odgovoran za njegovo brisanje


Tačno tako.
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
77.46.183.*



+3 Profil

icon Re: Funkcija koja vraca array?09.06.2008. u 19:44 - pre 193 meseci
Burgos nemoj da se ljutis
Nismo se razumeli, To sto u predhodnim primerima nisam stavljao delete[] nisam ga zaboravio nego me je mrzelo da stavljam jer sam mislio da se podrazumeva. Ispala frka oko delete[] oeratora.

Ako ima neko neko drugo resenje za ono sto sam naveo u predhodnom postu neka napise osim da deklarise ultra veliki niz .

[Ovu poruku je menjao SkyDiverX dana 09.06.2008. u 21:37 GMT+1]
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
217.169.209.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Funkcija koja vraca array?09.06.2008. u 21:01 - pre 193 meseci
Ne ljutim se. Možda sam zadrt ali se ne ljutim ;).
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
77.46.183.*



+3 Profil

icon Re: Funkcija koja vraca array?09.06.2008. u 21:57 - pre 193 meseci
Burgos mogli bi za dane piva malo ozbiljnije da porazgovaramo o ovoj temi uz "ladno pivo" .
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 895
*.bethere.co.uk.



+4 Profil

icon Re: Funkcija koja vraca array?09.06.2008. u 22:33 - pre 193 meseci
Niste vi razumeli ni shta sam ja hteo da kazhem ni zashto je inicijalno pitanje vishe na mestu nego ikada pre
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.114.*



+7 Profil

icon Re: Funkcija koja vraca array?09.06.2008. u 23:15 - pre 193 meseci
Ljudi dokle cete da raspravljate o tome kako da fn vrati pointer na niz :)
@deerbeer @SkyDiverX postavio sam kod na ovoj drugoj temi ... http://www.elitesecurity.org/p1970403
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
217.169.209.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Funkcija koja vraca array?10.06.2008. u 00:12 - pre 193 meseci
@NastyBoy, pa šta fali mom prvom primeru?

@SkyDividerX, vidimo se, moj si gost :).
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
*.ADSL.neobee.net.



+3 Profil

icon Re: Funkcija koja vraca array?10.06.2008. u 07:09 - pre 193 meseci
Dogovoreno .

Nego imam ja jos jedno vrlo interesantno pitanje kada smo vec tu kod funkcija koje vracaju niz.
Kako vratiti niz iz funkcije koja se nalazi u dll-u ?
 
Odgovor na temu

[es] :: C/C++ programiranje :: Funkcija koja vraca array?

Strane: 1 2

[ Pregleda: 6958 | Odgovora: 32 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.