fisica:informatica:201415:esercitazioni:esercitazione7.5
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Prossima revisione | Revisione precedente | ||
fisica:informatica:201415:esercitazioni:esercitazione7.5 [03/02/2015 alle 16:41 (11 anni fa)] – creata Susanna Pelagatti | fisica:informatica:201415:esercitazioni:esercitazione7.5 [12/02/2015 alle 11:30 (11 anni fa)] (versione attuale) – [Esercizio 5: Funzione di allocazione/deallocazione di matrici] Susanna Pelagatti | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
====== Esercitazione allocazione dinamica ====== | ====== Esercitazione allocazione dinamica ====== | ||
+ | |||
+ | ===== Esercizio 1: Sequenze e VLA ===== | ||
+ | |||
+ | Realizzare un programma C che legge e memorizza in un VLA una sequenza di double di lunghezza non nota a tempo di compilazione. | ||
+ | Richiedere all' | ||
+ | |||
+ | ===== Esercizio 2: Sequenze e malloc() ===== | ||
+ | |||
+ | Modificare la soluzione all' | ||
+ | |||
+ | Verificare la corretta allocazione e gestire gli errori. | ||
+ | |||
+ | ===== Esercizio 3: Allocazioni in grossi blocchi ===== | ||
+ | Eseguire il seguente programma C | ||
+ | <code c> | ||
+ | #include < | ||
+ | #include < | ||
+ | #define SIZE 10000000000 | ||
+ | |||
+ | int main (void) { | ||
+ | double * h; | ||
+ | |||
+ | h = malloc(SIZE*sizeof(double)); | ||
+ | | ||
+ | if ( h == NULL ) { | ||
+ | perror(" | ||
+ | exit(EXIT_FAILURE); | ||
+ | } | ||
+ | | ||
+ | printf(" | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | cosa succede ? Cercate di capire che cosa succede quando va in esecuzione '' | ||
+ | |||
+ | ===== Esercizio 4: realloc() ===== | ||
+ | |||
+ | Modificare la soluzione all' | ||
+ | |||
+ | Verificare la corretta allocazione e gestire gli errori. | ||
+ | |||
+ | ===== Esercizio 5: Funzione di allocazione/ | ||
+ | |||
+ | Le matrici possono essere rappresentate come array di puntatori a righe. | ||
+ | Si richiede di implementare le funzioni per la creazione e la deallocazione di matrici '' | ||
+ | < | ||
+ | /** crea una matrice di double rappresentata come array di puntatori a righe | ||
+ | \param n numero di righe | ||
+ | \param m numero di colonne | ||
+ | | ||
+ | \retval NULL se si e' verificato un errore | ||
+ | \retval p puntatore alla matrice allocata altrimenti | ||
+ | */ | ||
+ | double ** mat_new (unsigned n, unsigned m); | ||
+ | </ | ||
+ | crea una matrice con n righe ed m colonne e ne restituisce il puntatore. E | ||
+ | < | ||
+ | /** libera la memoria occupata da una matrice di double rappresentata come array di puntatori a righe | ||
+ | \param a puntatore alla matrice da deallocare | ||
+ | \param n numero di righe | ||
+ | | ||
+ | */ | ||
+ | void mat_free (double** a, unsigned n); | ||
+ | </ | ||
+ | Sviluppare un opportuno main che testa che l' | ||
+ | // | ||
+ | |||
fisica/informatica/201415/esercitazioni/esercitazione7.5.1422981660.txt.gz · Ultima modifica: 03/02/2015 alle 16:41 (11 anni fa) da Susanna Pelagatti