View Full Version : domanda su malloc
fuku san
24-03-2005, 15:29
quando un programma scritto in c viene caricato in memoria ed eseguito,il suo spazio di indirizzamento è diviso in 4 aree,scendendo dalle zone di memoria più alte a quelle più basse:
codice
dati statici
stack
heap
la funzione malloc alloca regioni di memoria dall'heap
ma come fa a sapere dove inizia e finishe l'heap?
molto semplice.... i registi di segmento al momento che chiami la malloc anno come valore il segmento corrente...
Attento però la definizione che ti sto dando è un pò diversa con gestione di memoria protetta.. perchè le informazioni dentro i registri segmento non puntano direttamente all'area di memoria ma ad una tabella di indirizzamento.... però prendi per buona la prima perchè in fin dei conti con la memoria protetta si fa qualche giro e salto in più ma poi si va a finire sempre allo stesso punto...
Ciao..
ilsensine
24-03-2005, 15:51
C'è un ulteriore layer di astrazione, che si interfaccia con le primitive di allocazione del sistema operativo.
nb lo stack in genere risiede nella regione più alta, e si espande verso il basso.
fuku san
24-03-2005, 17:24
ah già,probabilmente il codice di malloc che risiede nelle librerie statiche standard chiama la funzione del SO per allocare memoria,ad esempio VirtualAlloc sotto Win32
e VirtualAlloc sa dove finisce e inizia l'heap perchè a caricare il programma è stato windows stesso,ovvio
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.