Logo

Marco Cantù
Essential Pascal


Tradotto dall'inglese da: Paolo Rossi

Appendice A
Glossario

Questo e' un breve glossario dei termini tecnici usati in questo libro. Essi possono essere definiti anche altrove nel libro, ma ho deciso di raggrupparli per rendere facile la ricerca.

Heap (La Memoria)

Il termine Heap indica una porzione di memoria disponibile al programma, chiamata anche are di memoria dinamica. Lo heap e' l'area nella quale l'allocazione la deallocazione di memoria avviene in ordine sparso. Cio' vuol dire che se si allocano tre blocchi di memoria in sequenza, essi possono essere distrutti successivamente in qualsiasi ordine. Il manager dello heap si prende cura di tutti i dettagli, cosi' bisogna solo chiedere nuova memoria con GetMem o chiamando un costruttore per creare un oggetto, e Delphi ritornera' un nuovo blocco di memoria (riutilizzando eventualmente blocchi gia' distrutti).

Lo heap e' una delle tre aree di memoria disponibili ad un'applicazione. Le altre due sono chiamate area di memoria globale (e' dove vengono create le variabili globali) e stack. Contrariamente allo heap, le variabili globali sono allocate quando il programma parte e rilasciate quando il programma termina.

Delphi usa lo heap per allocare memoria per ogni oggetto, il contenuto delle stringhe, gli array dinamici e per richieste dirette di memoria (GetMem).

Windows permette ad un'applicazione di avere fino a 2 GigaBytes di spazio di indirizzamento, la maggior parte dei quali usati dallo heap.

Stack (La Memoria)

Il termine stack indica una porzione di memoria disponibile ad un programma, che e' dinamica ma e' allocata e deallocata seguendo uno specifico ordine. L'allocazione nello stack e' LIFO, Last In First Out. Questo vuol dire che l'ultimo blocco di memoria che e' stato allocato sara' il primo ad essere distrutto. La memoria stack e' tipcamente usata dalle routine (procedure, funzioni e metodi). Quando di chiama una routine, i suoi parametri e il valore di ritorno sono messi sullo stack (a meno che non si ottimizzi la chiamata, il default di Delphi). Le variabili che si dichiarano dentro ad una routine (usando l'istruzione var prima del begin) sono memorizzate sullo stack, cosi' quando la routine termina le variabili sono automaticamente distrutte (prima di ritornare alla routine chiamante, in ordine LIFO).

Lo stack e' una delle tre aree di memoria disponibile ad un'applicazione.

Delphi usa lo stack per i parametri delle routine e il valore di ritorno (a meno che noin si usi la convenzione di chiamata standard), per le variabili locali, per le funzioni Windows API e cosi' via.

Le applicazioni Windows possono riservare molta memoria per lo stack. In Delphi si possono modificare questi valori nella pagina Linker delle Project Options. Comunque, i valori di default vanno generalmente bene. Se si riceve un messaggio di stack full e' probabile che sia colpa di una funzione che ricorsivamente chiama se stessa, non perche' lo spazio dello stack e' troppo limitato.

Nuovi termini richiesti

© Copyright Marco Cantù, Wintech Italia Srl 1995-2000