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

Alokacija za string?

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

[ Pregleda: 3431 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kelja

Član broj: 70429
Poruke: 1416
77.46.179.*



+35 Profil

icon Alokacija za string?18.05.2007. u 19:13 - pre 205 meseci


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;
}
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Alokacija za string?19.05.2007. u 07:34 - pre 205 meseci
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.
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

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



+4 Profil

icon Re: Alokacija za string?19.05.2007. u 11:25 - pre 205 meseci
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.
 
Odgovor na temu

tosa
上海, 中国

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

ICQ: 14293955
Sajt: https://github.com/milost..


+48 Profil

icon Re: Alokacija za string?19.05.2007. u 14:20 - pre 205 meseci
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 :)
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Alokacija za string?19.05.2007. u 14:34 - pre 205 meseci
Good catch.
 
Odgovor na temu

kelja

Član broj: 70429
Poruke: 1416
77.46.177.*



+35 Profil

icon Re: Alokacija za string?19.05.2007. u 16:50 - pre 205 meseci
Hvala svima!

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

 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

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



+6 Profil

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


Probaj da staviš delete niz u destruktor i kazaće ti se samo.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

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



+6 Profil

icon Re: Alokacija za string?20.05.2007. u 14:18 - pre 205 meseci
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?
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

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



+4 Profil

icon Re: Alokacija za string?20.05.2007. u 17:39 - pre 205 meseci
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
 
Odgovor na temu

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

[ Pregleda: 3431 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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