Allocazione statica della memoria
|
|
|
- Demetrio Motta
- 8 anni fa
- Visualizzazioni
Transcript
1 Roberta Gerboni 1
2 2 Allocazione statica della memoria Cosa succede nella memoria del computer quando il un programma vengono dichiarate delle variabili? memoria Ad esempio: int main() 57 { int x= 57, y=25; int *p; p=&y; x=*p; } Le dichiarazioni determinano la presenza, in questo caso, di tre locazioni di memoria x, y e p allocate nell area dati, come mostrato nella seguente figura. Questo modalità di allocazione della memoria viene detta statica. Le variabili dichiarate in questo modo possono variare il loro contenuto, ma non possono variare le loro caratteristiche a tempo di esecuzione. Ad esempio, se dichiariamo: int V[5]; non possiamo modificare l'array a tempo di esecuzione in modo che questo contenga un numero di elementi che sia superiore a 5.
3 Allocazione statica della memoria La quantita di memoria da allocare è determinata e fissata a tempo di compilazione automaticamente dal sistema. Ogni variabile statica ha un nome, attraverso il quale la si può riferire. Il programmatore non ha la possibilità di influire sul tempo di vita di queste variabili che verranno deallocate alla terminazione del programma o alla chiusura di un blocco di istruzioni ( es.: { }, for(int i=.)). Allocazione dinamica della memoria Permette di definire variabili che possono essere create o accresciute in fase di esecuzione. Le variabili dinamiche devono essere allocate e deallocate esplicitamente dal programmatore. L area di memoria in cui vengono allocate le variabili dinamiche si chiama heap (in C) o memoria libera (in C++). Le variabili dinamiche non hanno un identificatore (nome), ma possono essere riferite soltanto attraverso il loro indirizzo (mediante i puntatori). Il tempo di vita delle variabili dinamiche è l'intervallo di tempo che intercorre tra l'allocazione e la deallocazione (che sono impartite esplicitamente dal programmatore). 3
4 4 Allocazione della memoria Il programma compilato è costituito da due parti distinte: Code Segment Data Segment Quando il programma viene eseguito, il Sistema Operativo riserva uno spazio di memoria per allocarvi stack e heap. Se lo spazio per stack e heap ha dimensione fissa (dipende dal S.O.), questo può esaurirsi per effetto di ripetute chiamate a funzione (stack) non chiuse o allocazioni dinamiche (heap o memoria libera). Esiste infatti una proprietà che lega heap e stack: allocando memoria in una delle due aree, questa aumenta mentre l'altra diminuisce, rientrando ovviamente nei limiti imposti dalla quantità di memoria disponibile.
5 5 Allocazione dinamica della memoria in C Le funzioni che il programmatore può usare per accedere allo heap (in C): Si trovano in <stdlib.h> Allocano un generico blocco contiguo di byte Restituiscono l indirizzo di memoria (di tipo puntatore-a-void) del primo byte del blocco, (NULL in caso di errore: allocazione non riuscita, dovrebbe essere sempre controllato) malloc (dim) alloca un blocco di byte non inizializzato composto da un numero di byte contigui pari a dim = N * dimensione_elemento e restituisce il puntatore a tale area. int *p; p = (int *) malloc(sizeof(int)); Il blocco allocato di byte non ha di per sé alcun tipo, il cast sul puntatore restituito fa sì che il blocco di byte sia considerato dal compilatore come avente il tipo indicato nel cast. Nell esempio il cast (int *) fa sì che il compilatore consideri il blocco di byte sufficiente a memorizzare un intero. Non si può applicare l operatore sizeof a un blocco di memoria allocato dinamicamente in quanto sizeof viene valutato dal compilatore.
6 6 Allocazione dinamica della memoria in C Le funzioni che il programmatore può usare per accedere allo heap (in C): calloc (N, dimensione_elemento) alloca un blocco di byte inizializzato, composto da un numero di byte pari a N * dimensione_elemento. calloc inizializza anche a 0 lo spazio di memoria allocato. È quindi simile alla malloc, ma, a differenza di questa, è meno veloce. int *p; p = (int *) calloc(1,sizeof(int)); La sintassi è: p = (tipodato *) malloc (sizeof(tipodato)); p = (tipodato *) calloc (N,sizeof(tipodato)); dove: tipodato è il tipo della variabile puntata p e` una variabile di tipo tipodato * sizeof( ) è una funzione standard che calcola il numero di byte che occupa il dato specificato come argomento p La malloc e la alloc provocano la creazione di una variabile dinamica nell heap restituiscono l indirizzo alla prima cella dell area allocata.
7 Esempi di allocazione Allocazione dinamica della memoria in C Vettore unidimensionale dinamico int *p; p=(int *) malloc (sizeof(int)*100); // Viene allocato un blocco di byte delle // dimensioni di 100 int; // è l assegnazione ad un puntatore a int // (il cast è opzionale) che fa sì // che il C lo veda come un vettore di int Vettore unidimensionale dinamico int *p; p=(int *) calloc (100, sizeof(int)); // Viene allocato un blocco di byte delle // dimensioni di 100 int inizializzati a 0; Il cast esplicito non è necessario usando un compilatore C standard, perché l assegnazione di un puntatore void ad un puntatore non-void non lo richiede necessariamente. Alcuni compilatori (in particolare quelli che compilano anche codice C++) lo richiedono comunque e quindi è bene aggiungerlo, anche per chiarezza e documentazione. Utilizzo: *p = 3; oppure p[0] = 3; *(p+12) = 19; p[12] = 19; 7
8 8 Rilascio della memoria dinamica in C La memoria allocata dinamicamente non viene rilasciata automaticamente (ovviamente questo capita comunque quando il programma termina in quanto tutta la memoria associata al programma viene rilasciata). Il C non ha un garbage collector che recupera a run-time la memoria inutilizzata. A run-time la memoria può essere rilasciata solo in modo esplicito, questo permette di riutilizzare quella porzione di memoria per servire successive allocazioni. free(p) rilascia il blocco di memoria puntata dal puntatore p (il sistema mantiene memoria del numero di byte che era stato allocato) La sintassi è: free (p); Se un puntatore p punta ad una variabile dinamica contenente un puntatore q ad un altra variabile dinamica, bisogna rilasciare prima q e poi p: free(p->q); free(p);
9 Eempio: Allocazione dinamica e rilascio della memoria dinamica in C #include <iostream> 1 2 int main() { int *P, *Q, x, y; x=5; y=14; P=(int*) malloc(sizeof(int)); Q=(int *) malloc(sizeof(int)); *P = 25; *Q = 30; *P = x; y = *Q; P = &x;.. free (Q); } l'ultimo assegnamento ha come effetto collaterale la perdita dell'indirizzo di una variabile dinamica (quella precedentemente referenziata da P) che rimane allocata, ma non é più utilizzabile! 9
10 10 Problemi legati all'uso dei Puntatori 1. Aree inutilizzabili: Possibilità di perdere l'indirizzo di aree di memoria allocate al programma che quindi non sono più accessibili. (v. esempio precedente). Se queste mancate deallocazioni delle aree di memoria aumentano si provoca un memory leak dovuto all'esaurimento della memoria. 2. Riferimenti pendenti (dangling reference) : Possibilità di fare riferimento ad aree di memoria non più allocate. int *P; P = (int *) malloc(sizeof(int));... free(p); *P = 100; /* Da non fare! */ Area deallocata 3. Riferimenti inesistenti: La malloc non garantisce il successo dell'operazione. Se non c'è memoria disponibile, o se il programma ha superato il limite di memoria che può referenziare, malloc restituirà un puntatore null. Molti programmi non controllano questa eventualità. Può quindi accadere di utilizzare il puntatore null restituito dalla malloc come se fosse un normale puntatore ad un'area di memoria allocata, il programma andrà in crash.
11 11 Allocazione dinamica e rilascio della memoria dinamica in C Riassumendo I prototipi delle funzioni malloc, calloc, realloc e free sono i seguenti: void * malloc (dim_totale); void * calloc ( int num_elementi, int dim_elemento); void * realloc ( void *ptr, int dim_totale ); void free ( void *ptr); Restituiscono un puntatore void che indica che si tratta di un puntatore ad una regione di dati di tipo sconosciuto. Restituiscono NULL se non riescono ad allocare la quantità di memoria richiesta. Essa modifica la dimensione di un blocco di memoria puntato da ptr a dim_totale bytes. Se ptr è NULL, l invocazione è equivalente ad una malloc(dim_totale). Se dim_totale è 0, l invocazione è equivalente ad una free(ptr). Essa libera lo spazio di memoria puntato da ptr, il cui valore proviene da una precedente malloc() o calloc() o realloc() e lo restituisce al S.O. Se ptr è NULL non viene eseguita nessuna operazione.
12 12 Allocazione dinamica della memoria in C Esercizi Utilizzare variabili e/o vettori allocati dinamicamente per risolvere i seguenti problemi. 1. Acquisire tre valori reali e calcolare il massimo e il minimo (allocare dinamicamente le variabili utilizzate). 2. Creare un array di numeri reali di dimensione specificata dall utente, caricare da tastiera i valori e comunicarlo in ordine inverso. 3. Calcolare la media di una sequenza di valori in doppia precisione inseriti dall utente. L inserimento del numero 0 determina la fine della sequenza. 4. Siano dati N punti appartenenti al piano cartesiano (caricarli in una tabella) e, successivamente, dato un numero > 0, corrispondente alla posizione nella tabella di un qualsiasi punto, comunicare la lunghezza della spezzata che unisce tutti i punti a partire dal primo fino a quello specificato.
13 Allocazione dinamica e rilascio della memoria in C++ Le funzioni che il programmatore può usare per accedere alla memoria libera in C++ sono: new per allocare memoria in modo dinamico. Il C++, in sostituzione di malloc fornisce l'operatore new per riservare spazio nella memoria libera. La funzione malloc non riconosce il tipo della variabile che deve allocare: infatti la sua sintassi richiede un parametro che rappresenta il numero di byte da riservare e restituisce il puntatore a quello spazio. L'operatore new, invece, riconosce il tipo e anche la sua dimensione in byte. Quindi non occorre usare l'operatore sizeof per determinare la dimensione dell'oggetto. Inoltre, il puntatore restituito da new non deve essere convertito. Il compilatore controlla che il tipo del puntatore all'oggetto corrisponda al tipo del puntatore a cui viene assegnato il valore e genera un errore se sono di tipo diverso. Esempi: int *P; float *Q; P = new int; // P punta ad una variabile di tipo intero Q= new float[10]; // Q punta ad un vettore di 10 elementi di tipo reale 13
14 14 Allocazione dinamica e rilascio della memoria in C++ delete per liberare memoria allocata in modo dinamico Per ogni istruzione new, deve essere presente la corrispondente istruzione delete. Dopo un delete inoltre, è buona norma inizializzare il puntatore a NULL (cioè rimuovere ogni indirizzo di memoria) Esempi: int *P; float *Q; P = new int; // P punta ad una variabile di tipo intero Q= new float[10]; // Q punta ad un vettore di 10 elementi di tipo reale.... delete P; delete [ ] Q; // libera la memoria (variabile semplice) puntata da P // libera la memoria allocata per un array il cui puntatore è Q
15 15 Allocazione dinamica e rilascio della memoria in C++ La sintassi è: tipodato *p = new tipodato; tipodato *q = new tipodato [numero_elementi]; Memoria libera p q La sintassi è: delete p; delete [ ] q; // per liberare memoria allocata per un array Memoria libera p q
16 16 Allocazione dinamica e rilascio della memoria in C++ Attenzione al seguente esempio: int x=5; int *p = new int ; p=&x; Quale significato hanno queste istruzioni?
17 17 Allocazione dinamica e rilascio della memoria in C++ Attenzione al seguente esempio: int x=5; int *p = new int ; p=&x; // Memory leak!! È stata allocata una locazione di tipo intero nella memoria dinamica. Il puntatore a tale memoria e andato perso: memory leak e quindi non sarà possibile deallocarla all interno del programma. Tale memoria verra deallocata solo al termine del programma. Questo potrebbe essere un problema, ad esempio: se il programma è scritto per restare in attesa e non terminare e si presentano molte situazioni di questo tipo la memoria potrebbe esaurirsi.
18 18 Allocazione dinamica e rilascio della memoria in C++ Esercizi Realizzare in C++ i programmi per risolvere i seguenti problemi, nell ambito della programmazione top-down. Utilizzare variabili e/o vettori allocati dinamicamente per risolvere i seguenti problemi. 1. Dichiarare una struttura di tipo data (con i seguenti campi g, m, a) e comunicare la data del giorno successivo (tenere conto degli anni bisestili). [Un anno è bisestile se è divisibile per 400 oppure per 4, ma non per 100] 2. Caricare N date e comunicare tutte quelle che appartengono ad anni bisestili. 3. Caricare un vettore di N elementi di numeri reali. Controllare quanti di essi sono interi e costruire due vettori, uno di numeri reali e l altro di interi, e copiare in ciascuno di essi i numeri presenti nel primo vettore. Prevedere la visualizzazione dei tre vettori.
Fondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme
L'Allocazione Dinamica della Memoria nel linguaggio C
L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego [email protected] http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria
L Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania [email protected] http://www.diit.unict.it/users/mpalesi Sommario Questo documento
Allocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
Gestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - [email protected] A pessimistic programmer sees the array as half empty.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
Il linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
Strutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
La gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti
Il linguaggio C. Puntatori e Array
Il linguaggio C Puntatori e Array Puntatori I puntatori sono variabili i cui valori sono indirizzi di locazioni in cui sono memorizzate altre variabili architettura a 32 bit: 232-1 indirizzi, ma non si
Allocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
Uso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
Laboratorio di Algoritmi e Strutture Dati. La gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Proff. Francesco Cutugno e Luigi Lamberti 2009 Cenni sui Processi Si definisce Programma un insieme di Istruzioni destinate
Allocazione dinamica della memoria: calloc() Se T è il nomed di un tipo, la chiamata calloc(n, sizeof(t)) è equivalente a malloc(n * sizeof(t))
Allocazione dinamica della memoria: malloc() In C è possibile allocare dinamicamente un area di memoria (ossia, durante l esecuzione di un programma) tramite le funzioni malloc() e calloc() (occorre includere
Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe
Lezione 19 e 20 - Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Valentina Ciriani (2005-2008) Laboratorio di programmazione Valentina Ciriani
Programmazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
Inside C : Puntatori. Indirizzo: operatore & p = &v; x = a; Puntatori Referenziazione e Dereferenziazione Arrays
Pointers: Puntatori (I) Le variabili finora incontrate sono caratterizzate da un nome (o identificativo), un tipo, ed occupano un area di memoria di dimensione dipendente dal tipo. Per accedere ad una
La Gestione della Memoria. Carla Binucci e Walter Didimo
La Gestione della Memoria Carla Binucci e Walter Didimo Esecuzione di programmi Java L esecuzione di un programma Java richiede: la compilazione del codice Java in bytecode Java (un linguaggio macchina
Linguaggio C: PUNTATORI
Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori
Strutture Dinamiche. Fondamenti di Informatica
Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));
Allocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
I PUNTATORI USO AVANZATO. Manuale linguaggio C
I PUNTATORI USO AVANZATO Manuale linguaggio C Allocazione dinamica della memoria Possibilità di allocare la memoria durante l esecuzione di un programma, per progettare strutture dati che crescano o si
Introduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016
Definizione di classi. Walter Didimo
Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti
Parametri Formali di una Funzione e Record di Attivazione
Parametri Formali di una Funzione e Attivazione Un record di attivazione rappresenta il mondo di una funzione, e contiene tutto ciò che ne caratterizza l esistenza, tra cui ad esempio: le variabili locali
Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
Esercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori
Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Salvatore Mandrà 7 Ottobre 2008 1 Esercizio L esercizio prevede l implementazione di funzioni per il prodotto di una matrice per un vettore, attraverso
Linguaggio C: puntatori
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa
Implementazione di Liste puntate
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Implementazione di Liste puntate 2 1 Indice Liste puntate semplici: Gli elementi sono logicamente
Allocazione dinamica. VLA, malloc() e dintorni
Allocazione dinamica VLA, malloc() e dintorni Rappresentazione di sequenze... È molto comune dover rappresentare sequenze di elementi tutti dello stesso tipo e fare operazioni su di esse: Es: sequenza
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
Stringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Gestione della Memoria
Gestione della Memoria Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 27 apr, 2016 Sommario 1 Tecniche di gestione Progetto della gestione
Fondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore
Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
Le operazioni di allocazione e deallocazione sono a carico del sistema.
Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione
I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
Perché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
La gestione della memoria
La gestione della memoria DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 [email protected] HTTP://WWW.DII.UNISI.IT/~RIGUTINI/
