










Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Appunti università della calabria - ingegneria informatica
Tipologia: Appunti
1 / 18
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!











Ogni volta che viene invocata una funzione
La dimensione del record di attivazione varia da una funzione all’altra per una data funzione, è fissa e calcolabile a priori
È creato ( allocato ) al momento dell’invocazione di una funzione Permane per tutto il tempo in cui la funzione è in esecuzione È distrutto ( deallocato ) al termine dell’esecuzione della funzione Ad ogni chiamata di funzione viene creato un nuovo record, specifico per quella chiamata di quella funzione
Code segment : contiene il codice eseguibile Data segment: contiene dati globali (comuni a tutte le funzioni) Heap : contiene dati dinamici (creati durante l’esecuzione, ad esempio liste Python o array Java) Stack : contiene i record di attivazione Code segment e data segment sono di dimensione fissata staticamente La dimensione dell'area associata a stack+heap è fissata staticamente Man mano che lo stack cresce, diminuisce l'area a disposizione dell'heap e viceversa
Il valore restituito dalla funzione chiamata può essere restituito alla funzione chiamante in due modi
def f_a(a): return a+ def f_b(b): return f_a(b) def f_c(): c = 10 return f_b(c) def main(): x = f_c() main()
def f_a(a): return a+ def f_b(b): return f_a(b) def f_c(): c = 10 return f_b(c) def main(): x = f_c() main() RA = (^) DL = x =
def f_a(a): return a+ def f_b(b): return f_a(b) def f_c(): c = 10 return f_b(c) def main(): x = f_c() main() RA = (^) DL = x =
c = 10
b = 10
def f_a(a): return a+ def f_b(b): return f_a(b) def f_c(): c = 10 return f_b(c) def main(): x = f_c() main() RA = (^) DL = x =
c = 10
b = 10
a = 10
def f_a(a): return a+ def f_b(b): return f_a(b) def f_c(): c = 10 return f_b(c) def main(): x = f_c() main() RA = (^) DL = x =
c = 10
b = 10 f_b restituisce il valore 11 l’esecuzione si sposta al suo RA (in f_c) viene eliminato il record di f_b
def f_a(a): return a+ def f_b(b): return f_a(b) def f_c(): c = 10 return f_b(c) def main(): x = f_c() main() RA = (^) DL = x =
c = 10 f_c restituisce il valore 11 l’esecuzione si sposta al suo RA (in main) viene eliminato il record di f_c