Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

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

  • 31 odgovor
  • 10.031 pregleda

Najnovija ↓

Re: Je li moguće znati tip podatka na osnovu memorijske adrese? 22.05.2008. u 17:03 · pre 224 meseca #21
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
Potpis
JokeJunky :)

Mrzim sublimirane marketinske poruke.
Re: Je li moguće znati tip podatka na osnovu memorijske adrese? 22.05.2008. u 17:56 · pre 224 meseca #22
"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.
Re: Je li moguće znati tip podatka na osnovu memorijske adrese? 22.05.2008. u 21:20 · pre 224 meseca #23
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.
Potpis
Tko leti vrijedi
Re: Je li moguće znati tip podatka na osnovu memorijske adrese? 23.05.2008. u 00:33 · pre 224 meseca #24
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.
Re: Je li moguće znati tip podatka na osnovu memorijske adrese? 23.05.2008. u 04:06 · pre 224 meseca #26
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/
Potpis
Tko leti vrijedi
Re: Je li moguće znati tip podatka na osnovu memorijske adrese? 23.05.2008. u 08:38 · pre 224 meseca #27
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.
Re: Je li moguće znati tip podatka na osnovu memorijske adrese? 23.05.2008. u 12:12 · pre 224 meseca #28
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...
Potpis
Viva lollapalooza
Re: Je li moguće znati tip podatka na osnovu memorijske adrese? 23.05.2008. u 13:22 · pre 224 meseca #30
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

Potpis
Viva lollapalooza
Re: Je li moguće znati tip podatka na osnovu memorijske adrese? 23.05.2008. u 14:11 · pre 224 meseca #31
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)
Re: Je li moguće znati tip podatka na osnovu memorijske adrese? 23.05.2008. u 14:43 · pre 224 meseca
izmenjeno 1 put, poslednji put deerbeer 23.05.2008. u 20:00
  1. deerbeer23.05.2008. u 20:00zapis iz teksta poruke
#32
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
Potpis
Viva lollapalooza
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme