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

Je li moguće znati tip podatka na osnovu memorijske adrese?

[es] :: C++ programiranje :: Je li moguće znati tip podatka na osnovu memorijske adrese?

Strane: 1 2

[ Pregleda: 1891 | Odgovora: 31 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gosha
Goran Bundalo
Zemun

Član broj: 2384
Poruke: 346
*.adsl-4.sezampro.yu.



Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?22.05.2008. u 16:03
Slazem se ja da u njegovom slucaju RTTI ne pomaze, ali isto tako kazem da je za tu problematiku najbolje koristiti RTTI.
Da bi ga koristio mora ipak da savlada sta je RTTI i sta mora da obezbedi u programu da bi to radilo.

Program ima koncepcijsku gresku koja je posledica ne poznavanja RTTI-ja.

Poz. Gosha
JokeJunky :)

Mrzim sublimirane marketinske poruke.
22.05.2008. u 16:03 

JustinTime

Član broj: 113999
Poruke: 23
*.PPTP-199-SA.GlobalNET.ba.



Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?22.05.2008. u 16:56
"Program" se zove trunk gateway i ima razbacan je u oko 400 .cpp fajlova. Nema koncepcijski problem proizašao iz nepoznavanja RTTI-ja nego problem sa curenjem memorije, te stoga pokušavam da kroz overload new i delete operatora, te malloc, calloc i realloc funkcija na neki način utvrdim kojeg je tipa pointer koji pokazuje na izgubljeni blok memorije.

Jedina koncepcijska greška ovdje je što prije nego si poletio da postaš link na Wikipediju nisi pažljivo pročitao o čemu se uopšte radi.
22.05.2008. u 16:56 

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 424
200.49.157.*



Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?22.05.2008. u 20:20
Citat:
JustinTime: "Program" se zove trunk gateway i ima razbacan je u oko 400 .cpp fajlova. Nema koncepcijski problem proizašao iz nepoznavanja RTTI-ja nego problem sa curenjem memorije, te stoga pokušavam da kroz overload new i delete operatora, te malloc, calloc i realloc funkcija na neki način utvrdim kojeg je tipa pointer koji pokazuje na izgubljeni blok memorije.


Pa sto ne kazes da je to problem?!

Prvo reci koji kompajler koristis da bih ti rekao koji alat da koristis za detekciju curenja memorije.
Tko leti vrijedi
22.05.2008. u 20:20 

JustinTime

Član broj: 113999
Poruke: 23
*.PPTP-196-SA.GlobalNET.ba.



Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?22.05.2008. u 23:33
eh, što kažu dok zec objasni da nije vo... :)

koristim vc++ 6.0 Ali to nije ni po muke. Našao sam bezbroj alata za detekciju leakova, ali problem je u tome što je riječ o embedded sistemu koji se vrti na Pharlapu. Tako da sam prisiljen da ga lovim ovako "ručno". Postoji i windows verzija aplikacije, ali na žalost na njoj ne mogu da simuliram leak.
22.05.2008. u 23:33 

NastyBoy
Bojan Nastic
UK

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



Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?22.05.2008. u 23:43
Htedoh da ti predlozhim templejtovani global new operator, ali kako je rech o embedded sistemu bolje je da se vratish na stari __FILE__ / __LINE__ postupak pracenja alokacija.
22.05.2008. u 23:43 

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 424
*.fibertel.com.ar.



Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 03:06
To definitivno jeste problem. Dok ne budem imao malo vise vremena da pogledam sta ima na mrezi pokusaj sa ovim paketom za detekciju leakova. Podrzava gomilu operativnih sistema (pharlap nije na listi ali bi verovatno lako proradio i tamo):

Mpatrol
http://www.cbmamiga.demon.co.uk/mpatrol/
Tko leti vrijedi
23.05.2008. u 03:06 

JustinTime

Član broj: 113999
Poruke: 23
*.bstelecom.ba.



Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 07:38
nasty: da, tome sam se i vratio. to je u krajnjoj konzekvenci ukinulo potrebu da znam tip podatka (samo odem u file i liniju i vidim :) ), ali problem sa curenjem ostaje, tako da ako imaš kakvu ideju... :)

kiklop: OK, probaću, hvala puno.
23.05.2008. u 07:38 

deerbeer
Beograd

Član broj: 174418
Poruke: 578
*.adsl-3.sezampro.yu.

Sajt: www.xemico.net


Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 11:12
Citat:
.....ali problem sa curenjem ostaje, tako da ako imaš kakvu ideju... :)

Jedan savet za ubuduce posto ne verujem da mozes da prodjes kroz svih 400 *.cpp file-ova
Kad budes alocirao memoriju sa new operatorom , probaj sa DEBUG_NEW makro-om
(ne znam da li ga ima u VS6.0 al u VS2005 ga ima sigurno)..
Ako ga nema instaliraj neki sveziji SDK pogledaj na msdn-u.

A on upravo radi ono sto ti je @NastyBoy rekao
Obavezno radi pod "DEBUG" build-om
Code:
 
CKlasa klasa = DEBUG_NEW CKlasa() ; 

Kad izadjes iz debug-a tj. iz programa u Output prozoru ce ti se ispisati svi memory-leak-ovi u programu i njihove pozicije ..
Znaci : Memory leak detection : File *.cpp Line : 23 itd...
grunge forever
23.05.2008. u 11:12 

JustinTime

Član broj: 113999
Poruke: 23
*.bstelecom.ba.



Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 11:53
ma lako bih ja za 400 .cpp fajlova, jedan
Code:
#define new DEBUG_NEW
bi to riješio, ali mislim da je to podržano tek od 2003-ke :(
23.05.2008. u 11:53 

deerbeer
Beograd

Član broj: 174418
Poruke: 578
*.adsl-3.sezampro.yu.

Sajt: www.xemico.net


Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 12:22
Mozes da prodjes kroz svih 400 fajlova i da uradis Search & Replace (new - > DEBUG_NEW) ;
Ako nisi instalirao neki svezi SDK na VS6.0 probaj sledece :
Code:

#define DEBUG_NEW new(THIS_FILE,__LINE__)

I onda uradi ono prvo sto sam ti naveo


grunge forever
23.05.2008. u 12:22 

NastyBoy
Bojan Nastic
UK

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



Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 13:11
Ipak bih ti preporuchio da napravish svoj custom memory manager/tracker kao "drop-in replacement" i kroz njega pratish alokacije.
Imash dosta primera na tu temu, jedan (relativno mator) kog se mogu setiti u trenutku je: http://www.flipcode.com/archiv...senting_A_Memory_Manager.shtml (ako uopshte uspesh da dohvatish taj fajl)
23.05.2008. u 13:11 

deerbeer
Beograd

Član broj: 174418
Poruke: 578
*.adsl-3.sezampro.yu.

Sajt: www.xemico.net


Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 13:43
Pa zavisi dosta koliko memory leak -ova ima u programu
i da li uopste zeli napredniji memory -management za svoj program ( da bi mogao da ga optimizuje )
zbog toga bi mozda bilo bolje da koristi neku custom bibilioteku.

Jer koriscenje DEBUG_NEW nije prakticno ako se nalazi u nekom *.cpp fajlu tj. klasi koju koristi jos nekih 100 drugih klasa-*.cpp u kodu
Output Debug prozor ce pokazivati gde je nastalo curenje memorije ...
al nece prikazivati odakle je pozvana funkcija u kojoj se alocirala nova memorija
(u tvom slucaju sa 400 fajlova ce ti se to verovatno desiti ako nisi dosad izolovao fajlove koji prave curenje memorije )

---------- dodato -----------
gornji link ne radi download .
evo nadjoh jedan na : http://www.codeproject.com/KB/applications/leakfinder.aspx




[Ovu poruku je menjao deerbeer dana 23.05.2008. u 20:00 GMT+1]
grunge forever
23.05.2008. u 13:43 

[es] :: C++ programiranje :: Je li moguće znati tip podatka na osnovu memorijske adrese?

Strane: 1 2

[ Pregleda: 1891 | Odgovora: 31 ]

Postavi temu Odgovori

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