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

Pointer na heap ?

[es] :: C/C++ programiranje :: Pointer na heap ?

[ Pregleda: 5452 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rivan
Ivan Radovanović

Član broj: 1901
Poruke: 71
*.ppp-bg.sezampro.yu

ICQ: 212235650


Profil

icon Pointer na heap ?03.08.2003. u 22:59 - pre 252 meseci
Da li neko zna (po mogucnosti portabilan nacin) da se proveri gde pokazuje neki pointer - da li je to stack, heap ili mozda adresa globalne promenljive, tj.
Code:

bool is_heap_ptr(void* ptr) {...}

int gp;

void main() {
    int x;
    char* z = new char[10];
    is_heap_ptr(&x);   // false
    is_heap_ptr(z+4);  // true
    is_heap_ptr(z+50); // true
    is_heap_ptr(&gp);  // false
}

Dakle nema potrebe da f-ja proverava da je to adresa alociranog bloka, samo da utvrdi da li je to adresa u okviru heapa ili ne (radi toga i za z+50 true)
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.adsl.zonnet.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Pointer na heap ?04.08.2003. u 12:08 - pre 252 meseci
Sumnjam da postoji prenosiv način jer heap ne mora da postoji na ciljnoj arhitekturi.

f
 
Odgovor na temu

Preeky
Bg

Član broj: 1586
Poruke: 40
*.b92.net



+21 Profil

icon Re: Pointer na heap ?04.08.2003. u 18:00 - pre 252 meseci
sto se tice portabilnosti to je nemoguce u ovom slucaju.
da bi napisao tu funkciju moracesh da odredish pocetak i kraj heap-a shto je dosta teshnko i zavisi od sistema do sistema.


evo pogledaj ovaj link gde imash implementaciju f-je za stack i heap.

http://users.bestweb.net/~ctips/tip023.html






int main[] = { 0xc3 };
 
Odgovor na temu

gandalf
Goran Raovic
senior network engineer
Belgrade

Član broj: 52
Poruke: 248
*.041net.co.yu

Jabber: goran.raovic@gmail.com


+44 Profil

icon Re: Pointer na heap ?04.08.2003. u 22:10 - pre 252 meseci
Sta je to heap?? Definisano mesto od u memoriji za neku promenljivu ili... ?? I drugo gde se smestaju promenljive koje koji ma su dodljene vrednosti?? (stack heap) ili negde na neko trece mesto. E da kad sam vec kod toga kako se pristupa promenljivim koje se nalaze na stacku znaci moraju li da se sa stacka uzimaju po nekom redosledu ili ... ?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Pointer na heap ?04.08.2003. u 22:18 - pre 252 meseci
Nekje da može, što bi rekli Piroćanci. Win32 proces na primer može da ima više heap-ova.
 
Odgovor na temu

Mikky

Član broj: 18
Poruke: 1563
*.drenik.net

ICQ: 44582291


+58 Profil

icon Re: Pointer na heap ?05.08.2003. u 00:21 - pre 252 meseci
Citat:
gandalf:
Sta je to heap?? Definisano mesto od u memoriji za neku promenljivu ili... ??


Heap ti je otprilike memorija koju tvoj program ima na raspolaganju da koristi. Da bi je koristio mora prvo da je zatrazi od operativnog sistema (alocira), i kad zavrsi sa koriscenjem trebalo bi da je oslobodi, u protivnom dolazi do tkz. memory leak-ova.
Za C alociras memoriju mislim preko malloc() a oslobadjas preko free()
Za C++ imas new i delete reci.
Za win32 api imas GlobalAlloc(), HeapAlloc(), VirtuallAlloc() i njima korespondendske funkcije za oslobadjanje.

Citat:

I drugo gde se smestaju promenljive koje koji ma su dodljene vrednosti?? (stack heap) ili negde na neko trece mesto.

Ako mislis na promenljive koje su inicijalizovane na samom pocetku programa, npr
int a=5;
ili
char asd[]="whuzaaaaaaa";

One su smestene u samom izvrsnom fajlu, gde tacno to zavisi od izvrsnog fajla i njegove strukture, za win32 PE fajlove to je negde u data sekciji

Citat:

E da kad sam vec kod toga kako se pristupa promenljivim koje se nalaze na stacku znaci moraju li da se sa stacka uzimaju po nekom redosledu ili ... ?

Promenljivim na stacku se pristupa preko da kazem "dinamicki", znaci to nisu tacno odredjene i u napred poznate lokacije kao npr kod inicijalizovanih promenljivih, ili globalnih promenljivih.Ako te bas zanima detaljno kako onda moras malo znati kako kompajleri generisu asm kod, sta je stack frame itd...


-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
 
Odgovor na temu

gandalf
Goran Raovic
senior network engineer
Belgrade

Član broj: 52
Poruke: 248
*.041net.co.yu

Jabber: goran.raovic@gmail.com


+44 Profil

icon Re: Pointer na heap ?05.08.2003. u 02:33 - pre 252 meseci
Znaci heap je mesto u memoriji koje je rezervisano za nas program! E u okviru heapa se nalaze segmenti.
 
Odgovor na temu

rivan
Ivan Radovanović

Član broj: 1901
Poruke: 71
*.verat.net

ICQ: 212235650


Profil

icon Re: Pointer na heap ?05.08.2003. u 10:42 - pre 252 meseci
Ovo resenje sa sbrk() nije najportabilnije ni medju UNIXima, a o tome da u Win i ne postoji odgovarajuca f-ja da i ne govorim, ali sa druge strane vrlo je brzo, a to je ono sto mi je trebalo

Sto se Win tice, ako je tesko proveriti da nesto pokazuje na heap mozda je lakse proveriti da ne pokazuje na stack (ovo jeste lako proveriti) ili da nije globalna promenljiva (ne znam kako to da proverim)?
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pointer na heap ?

[ Pregleda: 5452 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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