fisica:informatica:201415:esercitazioni:esercitazione8
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
fisica:informatica:201415:esercitazioni:esercitazione8 [03/02/2015 alle 16:32 (10 anni fa)] – [Esercizio 1: Sequenze di double] Susanna Pelagatti | fisica:informatica:201415:esercitazioni:esercitazione8 [03/02/2015 alle 16:38 (10 anni fa)] (versione attuale) – [Esercizio 3: Altre funzioni su liste di double] Susanna Pelagatti | ||
---|---|---|---|
Linea 19: | Linea 19: | ||
===== Esercizio 2: Funzioni di inserzione su liste di double ===== | ===== Esercizio 2: Funzioni di inserzione su liste di double ===== | ||
Consideriamo le funzioni | Consideriamo le funzioni | ||
- | < | + | < |
lista_d_t * inserisci_testa ( lista_d_t * l, double v); | lista_d_t * inserisci_testa ( lista_d_t * l, double v); | ||
lista_d_t * inserisci_coda ( lista_d_t * l, double v); | lista_d_t * inserisci_coda ( lista_d_t * l, double v); | ||
Linea 30: | Linea 30: | ||
===== Esercizio 3: Altre funzioni su liste di double ===== | ===== Esercizio 3: Altre funzioni su liste di double ===== | ||
Implementare le seguenti funzioni in modo iterativo e ricorsivo: | Implementare le seguenti funzioni in modo iterativo e ricorsivo: | ||
- | < | + | < |
/** calcola e restituisce il massimo della lista l */ | /** calcola e restituisce il massimo della lista l */ | ||
double max ( lista_d_t * l); | double max ( lista_d_t * l); | ||
Linea 36: | Linea 36: | ||
double somma ( lista_d_t * l); | double somma ( lista_d_t * l); | ||
/** libera la memoria occupata dalla lista */ | /** libera la memoria occupata dalla lista */ | ||
- | void fee_list( lista_d_t * l); | + | void free_list( lista_d_t * l); |
/** cancella, se presente, l' | /** cancella, se presente, l' | ||
del valore v dalla lista l (liberando la memoria) | del valore v dalla lista l (liberando la memoria) | ||
Linea 60: | Linea 60: | ||
* inserire la chiamata alla funzione di libreria muntrace() alla fine della parte del programma C che vogliamo verificare | * inserire la chiamata alla funzione di libreria muntrace() alla fine della parte del programma C che vogliamo verificare | ||
* compilare il file da verificare con opzione '' | * compilare il file da verificare con opzione '' | ||
- | < | + | < |
bash$ gcc -Wall -pedantic -g -o prova main.c | bash$ gcc -Wall -pedantic -g -o prova main.c | ||
</ | </ | ||
* settare la variabile di ambiente '' | * settare la variabile di ambiente '' | ||
- | < | + | < |
bash$ export MALLOC_TRACE=./ | bash$ export MALLOC_TRACE=./ | ||
</ | </ | ||
* eseguire, nel nostro esempio con: | * eseguire, nel nostro esempio con: | ||
- | < | + | < |
bash$ ./prova | bash$ ./prova | ||
</ | </ | ||
* dopo l' | * dopo l' | ||
- | < | + | < |
bash$ mtrace ./prova ./ | bash$ mtrace ./prova ./ | ||
</ | </ | ||
Linea 85: | Linea 85: | ||
Per fare questo procedere come segue: | Per fare questo procedere come segue: | ||
* compilare il file da verificare con opzione '' | * compilare il file da verificare con opzione '' | ||
- | < | + | < |
bash$ gcc -Wall -pedantic -g -o prova main.c | bash$ gcc -Wall -pedantic -g -o prova main.c | ||
</ | </ | ||
* eseguire | * eseguire | ||
- | < | + | < |
bash$ valgrind ./prova | bash$ valgrind ./prova | ||
</ | </ | ||
in questo modo, a schermo verranno riportare le infrazioni rilevate. Ad esempio, //invalid read// o //invalid write// sono accessi in lettura o scrittura a memoria non allocata o gia' deallocata. | in questo modo, a schermo verranno riportare le infrazioni rilevate. Ad esempio, //invalid read// o //invalid write// sono accessi in lettura o scrittura a memoria non allocata o gia' deallocata. | ||
+ | '' |
fisica/informatica/201415/esercitazioni/esercitazione8.1422981126.txt.gz · Ultima modifica: 03/02/2015 alle 16:32 (10 anni fa) (modifica esterna)