Newsgroup: it.comp.programmare
Titolo: Che cos'è lo HEAP? E dov'è?

Ciao,
come da soggetto...
Sě, lo so che lo heap di un programma č
un'area di memoria, ma... ESATTAMENTE
quale area di memoria č???
E' una sezione di memoria che precede le altre
o che le segue?
So che viene assegnata al programma al lancio
secondo la richiesta che questo ne fa, ma che
succede se il programma esaurisce quella che
gli č stata assegnata? Ne viene allocata altra
dal sistema operativo senza che il programma
faccia nulla o deve richiederne altra lui?
Malloc(), calloc(), new ecc.ecc. allocano parti di
heap o di memoria globale?
Vorrei saperne di piů... avete lumi voi?

 ha scritto nel messaggio
news:hKJBb.187380$hV.70...@news2.tin.it...


 globale?
"heap" e "memoria globale" sono la stessa cosa, in C
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.5. C, C++ and ASM developers
                               and beta testers are welcome!

 "heap" e "memoria globale" sono la stessa cosa, in C
considerando che il c non prevede alcun concetto di "memoria globale" direi
che la tua frase non e` vera.
Il significato piu` sensato che riesco a dare alla parola "memoria globale"
e` "area di memoria in cui risiedono le variabili globali": le variabili
globali risiedono nell'area statica (che contiene anche altre cose), ma
quest'ultima e` ben distinta dallo heap.
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

 quest'ultima e` ben distinta dallo heap.
<parentesi>
E` sempre bello vedere che non sei sparito del tutto :)
</parentesi>
-- 
Lawrence "Rhymes" Oluyede
http://loluyede.blogspot.com

 globale" e` "area di memoria in cui risiedono le variabili globali"
moh, opinioni. A me suona come "il contrario di stack"


 quest'ultima e` ben distinta dallo heap.
A seguito di ricerche sulla rete, ho appurato che:
1) la memoria globale (quella di sistema libera e
non allocata nè prenotata dal programma) e lo heap
sono EFFETTIVAMENTE due cose diverse, anche se il
C++ le tratta allo stesso modo e non è possibile
dire, a priori, se il prossimo "new Qualcosa"
allocherà memoria dallo heap o dalla mem. globale:
il compilatore C++ si riserva di organizzare le cose
come gli fa più comodo.
2) a volte lo heap è una sezione o segmento a parte,
altre volte è contenuto nello stesso segmento dello
stack, e mentre lo stack parte dall'alto e crescendo
cala, lo heap parte dal basso. Questo per ridurre la
richiesta di memoria e la frammentazione interna.
Ora la mia domanda è: COME faccio a sapere in quale
delle due situazioni mi trovo? Dipende dai linguaggi
o dal sistema operativo? Dipende dalla presenza o meno
di un garbage collector, come sembrano suggerire le
mie ricerche?

 mie ricerche?
dipende da un sacco di cose, tra cui compilatore e sistema operativo.
Considera che se scrivi un programma che funziona solo perche` conosce la
struttura interna della memoria allocata rischi seriamente di andare
incontro ad una serie di problemi di portabilita` (sia da una piattaforma
all'altra che da un compilatore all'altro che da una versione ad un altra
dello stesso compilatore) e di "mal di testa" (nel senso che ti vai ad
incasinare la vita quando magari c'e` una soluzione piu` semplice al tuo
problema.
Domanda: perche` ti serve sapere queste informazioni?


 situazioni mi trovo? Dipende dai linguaggi o dal sistema operativo?
dipende unicamente dal sistema operativo, a volte neanche da quello. Se 
non fai una domanda più specifica qui non si va avanti


 Domanda: perche` ti serve sapere queste informazioni?
Perchè vorrei ricostruire una mappa completa
di un exe caricato in memoria, così mi serve
di sapere DOVE il loader di Windows carica COSA...
per le sezioni dei programmi/DLL non c'è problema,
sta scritto negli header dei rispettivi file, ma
lo heap e lo stack? A che indirizzi vanno a finire???
P.S. per alcuni programmi c'è una sezione apposta
per lo stack e vabbè, ma la maggior parte non ce l'ha
e quindi è il loader che decide da solo cosa fare in
base alla quantità di memoria prenotata/impegnata.

 prenotata/impegnata.
il loader di che?


 il loader di che?
Di Windows...

 quale area di memoria č???
http://tinyurl.com/z9u2
http://tinyurl.com/z9u3
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it