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

Pad programa zbog funkcije clanice klase

[es] :: C/C++ programiranje :: Pad programa zbog funkcije clanice klase

[ Pregleda: 2236 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

azzpoz

Član broj: 300637
Poruke: 96



+1 Profil

icon Pad programa zbog funkcije clanice klase05.11.2013. u 06:32 - pre 132 meseci
Code:
void osoba::setIme(char *io)
{
     if(ime != NULL)
     {
            delete []ime;
            ime = NULL;
     }
     
     ime = new char[strlen(io)+1];
     
     strncpy(ime,io,strlen(io)+1);
     ime[strlen(io)+1] = '\0';     
}



Konstantno mi program pada zbog ove funkcije!

Ako stavim strcpy(ime, io) -> radi bez problema, ali zašto ne radi sa strncpy?

Ako bih postavio strncpy(ime, io, strlen(io)-1) radit će!!!
Zašto moram -1, kada sam već +1 naveo da će biti za -> '\0'
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
212.178.241.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Pad programa zbog funkcije clanice klase05.11.2013. u 09:11 - pre 132 meseci
Tražiš problem na pogrešnom mestu.

Ako inicijalizuješ niz sa:

Code:
ime = new char[strlen(io)+1];


indeksi niza idu od 0, pa sve do strlen(io) (a ne do strlen(io) + 1).

U daljem kodu imaš sledeće:

Code:
ime[strlen(io)+1] = '\0';


čime adresiraš nealociran deo memorije.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1255



+96 Profil

icon Re: Pad programa zbog funkcije clanice klase05.11.2013. u 10:15 - pre 132 meseci
Predstavljanje tekstualnog niza znakova sa char*, i alociranje sa new[], i kopiranje sa strcpy su sve rešenja preuzeta od starijeg brata, jezika C. Mlađi brat, C++, ima modernije i bolje rešenje - std::string. Treba njega koristiti, i sve ove muke će postati deo prošlosti, a kod će postati jednostavniji i čitljiviji. Možda ćeš naleteti na neke druge probleme, ali dugoročno gledano isplati se preći na ono što je bolje, i što je izmišljeno upravo da bi zamenilo nešto što je ranije postojalo.
 
Odgovor na temu

azzpoz

Član broj: 300637
Poruke: 96



+1 Profil

icon Re: Pad programa zbog funkcije clanice klase05.11.2013. u 17:16 - pre 132 meseci
Još uvijek učim C++, pa me zanimao i ovaj dio...

Mislim da sam razumio!
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pad programa zbog funkcije clanice klase

[ Pregleda: 2236 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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