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

Pomoc za tumacenje greske please

[es] :: C/C++ programiranje :: Pomoc za tumacenje greske please

[ Pregleda: 3642 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

flx

Član broj: 41193
Poruke: 56
*.sbb.co.yu.



+1 Profil

icon Pomoc za tumacenje greske please12.06.2005. u 12:35 - pre 229 meseci
Dakle na kraju izvrsenja programa izbacuje sledecu poruku:


Debug Assertion Failed!

Program: ...
File:dbgdel.cpp
Line:52

Expression:_BLOCK_TYPE_IS_VALID(p_Head->nBlockUse)


Da li neko zna uopste o cemu je otprilike rec ako izadje ovakva poruka.

Hvala.
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.fsb.hr.



+9 Profil

icon Re: Pomoc za tumacenje greske please13.06.2005. u 13:07 - pre 229 meseci
Rijec je zasigurno o dinamickoj dealokaciji memorije. Meni se to zato par puta dogodilo. Provjeri da li si sve ispravno dealocirao i provjerio da li su i alokacije uspjele.
 
Odgovor na temu

z@re
Zarko Bulatovic
Split

Član broj: 29849
Poruke: 443
*.cmu.carnet.hr.



+25 Profil

icon Re: Pomoc za tumacenje greske please16.06.2005. u 01:58 - pre 229 meseci
ajd postaj sve dijelove koda gdje inicializiras pointere, i sve djelove koda gdje ih oslobadjas.

Q: HSP56 Micromodem nece da radi kompjuter ga prepozna a kad treba da se konektujem nece ne daje ni znaka zivota. u cemu je problem.

A: Crko mozda od grmljavine mozda od spanaca. Uglavnom baci ga u WC solju jako povuci vodu. Skupi 5e i uzmi drugi i ne postuj temu na pogresno mesto.
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
195.252.89.*



Profil

icon Re: Pomoc za tumacenje greske please16.06.2005. u 10:01 - pre 229 meseci
z@re, z@re... pa ti imas memory leak u potpisu:

Code:

#include <stdio.h>
#include <string.h>

void main()
{
 char *potpis;
 potpis = (char *)malloc(12);

 strcpy(potpis, "nema_potpisa");
 potpis[12] = '\0';

 printf("%s\n", potpis);
}


yooyo
 
Odgovor na temu

flx

Član broj: 41193
Poruke: 56
*.sbb.co.yu.



+1 Profil

icon Re: Pomoc za tumacenje greske please16.06.2005. u 23:21 - pre 229 meseci
Program je dosta velik ali evo jedna cinjenica:

kada napisem npr:

Objekat ob;

i sada ga prosledim dalje u neki drugi objekat on izbaci tu gresku sa pocetka,ali ako napisem:

Objekat *ob=new Objekat;

i prosledim, greske na kraju nema.


 
Odgovor na temu

overc
Zagreb

Član broj: 61590
Poruke: 2
*.adsl.net.t-com.hr.



Profil

icon Re: Pomoc za tumacenje greske please23.06.2005. u 21:20 - pre 229 meseci
void main()
{
char *potpis; //ok
potpis = (char *)malloc(12);//ok moglo i bolje "(char *)malloc(12 * sizeof(char))"

strcpy(potpis, "nema_potpisa");//ok ! zauzima 12 byte-a(12 * sizeof(char))
potpis[12] = '\0';// ! hm prepisao si memorjiu koja nije tvoja jer
//kako si naveo: malloc(12) zauzeo si samo 12 bayta znaci da mozes
//dereferencirat samo od potpis[0] do potpis[11] jer indexi idu od 0 do
//n-1 zanci od 0 do 11; (neki puta moze proc a neki puta ti javi error
//ovisi kaj se nalazi na tom delu u memorii)
printf("%s\n", potpis);
free(potpis);// naravno ovo moze i ne mora jer sam OS(ovisi koji ) ti sam automatski
//oslobodi memoriu koju si zauzeo..
}
 
Odgovor na temu

Marko Stankovic

Član broj: 11
Poruke: 306
212.200.120.*



Profil

icon Re: Pomoc za tumacenje greske please23.06.2005. u 23:40 - pre 229 meseci
Citat:
flx: Program je dosta velik ali evo jedna cinjenica:

kada napisem npr:

Objekat ob;

i sada ga prosledim dalje u neki drugi objekat on izbaci tu gresku sa pocetka,ali ako napisem:

Objekat *ob=new Objekat;

i prosledim, greske na kraju nema.


Pazi ne znam kakav je kod i sta ocekuju te metode kojima prosledjujes objekat, ali postoji veeeeelika razlika izmedju prosledjivanja pokazivaca i prosledjivanja celog objekta. Ako metoda ocekuje pokazivac, prosledi joj pokazivac ili adresu objekta, a nikako ceo objekat.

Ako je kod veliki ne moras da ostavljas ceo kod, vec ostavi tu 52. liniju koja pravi problem, i ostavi deklaraciju metode ako se slucajno poziva neka na toj liniji.


Citat:
overc:
free(potpis);// naravno ovo moze i ne mora jer sam OS(ovisi koji ) ti sam automatski
//oslobodi memoriu koju si zauzeo..
}


Uh, ne mora???? Mozda u ovom banalnom primeru i ne mora ali kad god rezervises memoriju moras je obavezno i osloboditi kada vise nije potrebna.
I drink to make other people interesting.
 
Odgovor na temu

overc
Zagreb

Član broj: 61590
Poruke: 2
*.adsl.net.t-com.hr.



Profil

icon Re: Pomoc za tumacenje greske please24.06.2005. u 10:39 - pre 229 meseci
da naravno zaboravih reci da kada alociras memoriju sa malloc provjeri kaj je vratila :

potpis = (char *)malloc(12);

provjera:

if(potpis==NULL) ....ispisi nesto..


jer ako malloc nije mogao zauzeti nista...

strcpy(potpis, "nema_potpisa"); // tu ce ti nastat s*****


to naravno "ne moras" kada zauzimas samo 12 byte-a jer ce malloc proc


Marko Stankovic wrote:

Citat:
Uh, ne mora???? Mozda u ovom banalnom primeru i ne mora ali kad god rezervises memoriju moras je obavezno i osloboditi kada vise nije potrebna
.


u ovom primjeru ne mora (jer je premali) i pisao on free ili ne pisao memorija ce se osloboditi(prilikom izlaska) ,naravno da u vecim primjerima bi uvjek malloc() trebao ici u paru sa free()...

 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
195.252.89.*



Profil

icon Re: Pomoc za tumacenje greske please25.06.2005. u 10:26 - pre 229 meseci
Citat:
u ovom primjeru ne mora (jer je premali) i pisao on free ili ne pisao memorija ce se osloboditi(prilikom izlaska)...


Zavisi od OS-a... Windows, Linux, MacOS ili neki veci OS ce osloboditi memoriju, ali ako pises programe za male uredjaje (mikrokontrolere, telefone, ..) mozda i nece.

yooyo

 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Pomoc za tumacenje greske please25.06.2005. u 15:56 - pre 229 meseci
Citat:
Code:

 strcpy(potpis, "nema_potpisa");


Ovde se kopira 13 bajtova, 12 + '\0'.
 
Odgovor na temu

Marko Stankovic

Član broj: 11
Poruke: 306
212.200.120.*



Profil

icon Re: Pomoc za tumacenje greske please25.06.2005. u 22:34 - pre 229 meseci
Citat:
overc:
u ovom primjeru ne mora (jer je premali) i pisao on free ili ne pisao memorija ce se osloboditi(prilikom izlaska) ,naravno da u vecim primjerima bi uvjek malloc() trebao ici u paru sa free()...


Ok, rekao sam da je primer prost i da nece biti problema, ali iskreno mislim da nikada ne treba razmisljati da li je kod prost ili nije vec uvek treba koristiti free() pa makar rezervises i jedan bajt, jer ko zna mozda ce nekad pozeleti da malo izmeni kod pa pusti neku beskonacnu petlju a zaboravi da nije ubacivao free() i posle x sekundi program zauzeo celu memoriju.
I drink to make other people interesting.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pomoc za tumacenje greske please

[ Pregleda: 3642 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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