Strumenti Utente

Strumenti Sito


fisica:informatica:201415:esercitazioni:esercitazione8

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
fisica:informatica:201415:esercitazioni:esercitazione8 [03/02/2015 alle 16:32 (10 anni fa)] – [Esercizio 1: Sequenze di double] Susanna Pelagattifisica: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
-<code>+<code c>
 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:
-<code>+<code c>
 /** 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'elemento che contiene la prima occorrenza  /** cancella, se presente, l'elemento che contiene la prima occorrenza 
 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 ''-g'' per includere le informazioni di debugging. Ad esempio se il mio file si chiama ''main.c'' posso compilare con   * compilare il file da verificare con opzione ''-g'' per includere le informazioni di debugging. Ad esempio se il mio file si chiama ''main.c'' posso compilare con
-<code>+<code bash>
 bash$ gcc -Wall -pedantic -g -o prova main.c  bash$ gcc -Wall -pedantic -g -o prova main.c 
 </code> </code>
   * settare la variabile di ambiente ''MALLOC_TRACE'' al path del file in cui vogliamo che la ''mtrace()'' registri le informazioni sugli accessi di memoria. Ad esempio se voglio registrare le informazioni nel file ''./mtrace.out'' devo usare il comando   * settare la variabile di ambiente ''MALLOC_TRACE'' al path del file in cui vogliamo che la ''mtrace()'' registri le informazioni sugli accessi di memoria. Ad esempio se voglio registrare le informazioni nel file ''./mtrace.out'' devo usare il comando
-<code>+<code bash>
 bash$ export MALLOC_TRACE=./mtrace.out bash$ export MALLOC_TRACE=./mtrace.out
 </code> </code>
   * eseguire, nel nostro esempio con:   * eseguire, nel nostro esempio con:
-<code>+<code bash>
 bash$ ./prova bash$ ./prova
 </code> </code>
   * dopo l'esecuzione nel file ''./mtrace.out'' sono registrati gli accessi in formato testuale non facilmente comprensibile. Interpretarlo con l'utility mtrace. Ad esempio sempre riferendosi al nostro esempio invocare   * dopo l'esecuzione nel file ''./mtrace.out'' sono registrati gli accessi in formato testuale non facilmente comprensibile. Interpretarlo con l'utility mtrace. Ad esempio sempre riferendosi al nostro esempio invocare
-<code>+<code bash>
 bash$ mtrace ./prova ./mtrace.out  bash$ mtrace ./prova ./mtrace.out 
 </code> </code>
Linea 85: Linea 85:
 Per fare questo procedere come segue:   Per fare questo procedere come segue:  
   * compilare il file da verificare con opzione ''-g'' per includere le informazioni di debugging. Ad esempio se il mio file si chiama ''main.c'' posso compilare con   * compilare il file da verificare con opzione ''-g'' per includere le informazioni di debugging. Ad esempio se il mio file si chiama ''main.c'' posso compilare con
-<code>+<code bash>
 bash$ gcc -Wall -pedantic -g -o prova main.c bash$ gcc -Wall -pedantic -g -o prova main.c
 </code> </code>
   * eseguire   * eseguire
-<code>+<code bash>
 bash$ valgrind ./prova bash$ valgrind ./prova
 </code> </code>
 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.
  
 +''valgrind'' contiene moltissime opzioni, invitiamo gli studenti interessati ad esplorarle partendo dal[[http://valgrind.org/|sito]].
fisica/informatica/201415/esercitazioni/esercitazione8.1422981126.txt.gz · Ultima modifica: 03/02/2015 alle 16:32 (10 anni fa) (modifica esterna)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki