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

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

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

Strane: 1 2

[ Pregleda: 6881 | Odgovora: 31 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gosha
Zemun

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



+40 Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?22.05.2008. u 16:03 - pre 193 meseci
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.
 
Odgovor na temu

JustinTime

Član broj: 113999
Poruke: 28
*.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 - pre 193 meseci
"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.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?22.05.2008. u 20:20 - pre 193 meseci
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
 
Odgovor na temu

JustinTime

Član broj: 113999
Poruke: 28
*.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 - pre 193 meseci
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.
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

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



+4 Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?22.05.2008. u 23:43 - pre 193 meseci
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.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

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

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 03:06 - pre 193 meseci
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
 
Odgovor na temu

JustinTime

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



Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 07:38 - pre 193 meseci
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.
 
Odgovor na temu

deerbeer
Beograd

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



+395 Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 11:12 - pre 193 meseci
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...
Viva lollapalooza
 
Odgovor na temu

JustinTime

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



Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 11:53 - pre 193 meseci
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 :(
 
Odgovor na temu

deerbeer
Beograd

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



+395 Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 12:22 - pre 193 meseci
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


Viva lollapalooza
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

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



+4 Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 13:11 - pre 193 meseci
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)
 
Odgovor na temu

deerbeer
Beograd

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



+395 Profil

icon Re: Je li moguće znati tip podatka na osnovu memorijske adrese?23.05.2008. u 13:43 - pre 193 meseci
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]
Viva lollapalooza
 
Odgovor na temu

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

Strane: 1 2

[ Pregleda: 6881 | Odgovora: 31 ] > FB > Twit

Postavi temu Odgovori

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