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

Alokacija za string?

[es] :: C++ programiranje :: C++ za početnike :: Alokacija za string?

[ Pregleda: 782 | Odgovora: 8 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kelja

Član broj: 70429
Poruke: 953
77.46.179.*

Sajt: www.sinisake.com


Profil

icon Alokacija za string?18.05.2007. u 19:13



Zanima me zasto je u svim knjigama konstruktor kopije realizovan na sledeci nacin:

Code:

class String {
   char* niz;
 public:
   String(String& s) {
      niz=new char[strlen(s.niz)+1];
      strcpy(niz,s.niz);
   }
}
 


kada je mnogo jednostavnije ovako:

Code:

String(String& s) {
  niz=s.niz;
}
18.05.2007. u 19:13 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2644
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Alokacija za string?19.05.2007. u 07:34
Ako nešto nisam omašio, ti si početak niza karaktera niz vezao za početak niza s.niz
čiji je 'rok trajanja' prvi sledeći izlazak iz bloka {}, pa će tako i niz vrlo brzo pokazivati
na nešto što više nije validno.

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
19.05.2007. u 07:34 

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 870
..nge81-129.btcentralplus.com.

Sajt: www.frd.co.uk


Profil

icon Re: Alokacija za string?19.05.2007. u 11:25
Knjishki pristup je sasvim kako treba.

Pravo reshenje je negde izmedju, tzv. "copy-on-write", gde se pravi kopija bafera jedino u sluchaju da neki od objekata koji ga dele pokusha da ga promeni.
"The rational prisoner exploits the weak places, creates order from chaos: instead, collectives like the FSF vindicate their jailers by building cells almost compatible with the existing ones, albeit with more features."
19.05.2007. u 11:25 

tosa
Miloš Tošić
上海,中国

Član broj: 1811
Poruke: 1245
..w.sh.dynamic.163data.com.cn.

Sajt: www.EndWarGame.com


Profil

icon Re: Alokacija za string?19.05.2007. u 14:20
Citat:
X Files: Ako nešto nisam omašio, ti si početak niza karaktera niz vezao za početak niza s.niz
čiji je 'rok trajanja' prvi sledeći izlazak iz bloka {}, pa će tako i niz vrlo brzo pokazivati
na nešto što više nije validno.

String s je prosleđen kao referenca, tako da će memorija/pointer biti validna ali
ostaje problem deljenja istog sadržaja između dva stringa, kao što je Bojan pomenuo.

Boki, potpis ti je carski :)

Soylent green: over 6 billion served!
19.05.2007. u 14:20 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2644
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Alokacija za string?19.05.2007. u 14:34
Good catch.

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
19.05.2007. u 14:34 

kelja

Član broj: 70429
Poruke: 953
77.46.177.*

Sajt: www.sinisake.com


Profil

icon Re: Alokacija za string?19.05.2007. u 16:50
Hvala svima!

@toso,
u kojim situacijama drugo resenje moze predstavljati problem?

19.05.2007. u 16:50 

Dragi Tata

Član broj: 1958
Poruke: 3874
*.hsd1.ma.comcast.net.

Sajt: www.novetehnologije.com


Profil

icon Re: Alokacija za string?20.05.2007. u 14:15
Citat:
kelja: u kojim situacijama drugo resenje moze predstavljati problem?


Probaj da staviš delete niz u destruktor i kazaće ti se samo.
20.05.2007. u 14:15 

Dragi Tata

Član broj: 1958
Poruke: 3874
*.hsd1.ma.comcast.net.

Sajt: www.novetehnologije.com


Profil

icon Re: Alokacija za string?20.05.2007. u 14:18
Citat:
NastyBoy: Pravo reshenje je negde izmedju, tzv. "copy-on-write", gde se pravi kopija bafera jedino u sluchaju da neki od objekata koji ga dele pokusha da ga promeni.


Onda moraš da ga "lockuješ". Znaš li neku implementaciju std::string koja koristi COW?
20.05.2007. u 14:18 

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 870
..nge81-129.btcentralplus.com.

Sajt: www.frd.co.uk


Profil

icon Re: Alokacija za string?20.05.2007. u 17:39
Nishta ozbiljnije nisam probao, iskreno. Pogledao sam par relativno jednostavnih implementacija, ali nijedna nije drop-in zamena za std::string. Moja bolest "string je ili hash ili se ne koristi" je u metastazi
"The rational prisoner exploits the weak places, creates order from chaos: instead, collectives like the FSF vindicate their jailers by building cells almost compatible with the existing ones, albeit with more features."
20.05.2007. u 17:39 

[es] :: C++ programiranje :: C++ za početnike :: Alokacija za string?

[ Pregleda: 782 | Odgovora: 8 ]

Postavi temu Odgovori

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