X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=0d7a5dce17063690823542373e65976c679fcb3b;hp=b092b2d2faed477337d60b1641fa8c8d93883131;hb=ba007b78543f53433b49aba62109a90848dccf0f;hpb=cdc1b275bbd83ad0dbf1ba4be801118724a51085 diff --git a/process.tex b/process.tex index b092b2d..0d7a5dc 100644 --- a/process.tex +++ b/process.tex @@ -533,7 +533,7 @@ particolare: \end{itemize*} Il problema più comune e più difficile da risolvere che si incontra con le -routines di allocazione è quando non viene opportunamente liberata la memoria +routine di allocazione è quando non viene opportunamente liberata la memoria non più utilizzata, quello che in inglese viene chiamato \textit{memory-leak}, (cioè \textsl{perdita di memoria}). @@ -576,7 +576,7 @@ non esiste un analogo della \func{free}) in quanto essa viene rilasciata automaticamente al ritorno della funzione. Come è evidente questa funzione ha molti vantaggi, anzitutto permette di -evitare alla readice i problemi di memory leak, dato che non serve più la +evitare alla radice i problemi di memory leak, dato che non serve più la deallocazione esplicita; inoltre la deallocazione automatica funziona anche quando si usa \func{longjmp} per uscire da una subroutine con un salto non locale da una funzione (vedi \secref{sec:proc_longjmp}). @@ -796,9 +796,9 @@ messo in esecuzione. Oltre al passaggio dei parametri, un'altra modalità che permette di passare delle informazioni che modifichino il comportamento di un programma è quello dell'uso del cosiddetto \textit{environment} (cioè l'uso delle -\textsl{varibili di ambiente}). In questa sezione esamineremo le funzioni che +\textsl{variabili di ambiente}). In questa sezione esamineremo le funzioni che permettono di gestire parametri e opzioni, e quelle che consentono di -manipolare ed utilizzare le varibili di ambiente. +manipolare ed utilizzare le variabili di ambiente. \subsection{Il formato dei parametri} @@ -844,7 +844,7 @@ Per gestire le opzioni all'interno dei argomenti a linea di comando passati in \var{argv} le librerie standard del C forniscono la funzione \func{getopt} che ha il seguente prototipo: \begin{prototype}{unistd.h} -{int getopt(int argc, char * const argv[], const char * optstring)} +{int getopt(int argc, char *const argv[], const char *optstring)} Esegue il parsing degli argomenti passati da linea di comando riconoscendo le possibili opzioni segnalate con \var{optstring}. @@ -1325,7 +1325,7 @@ problema lo standard ISO C99\footnote{alcuni sistemi che non hanno questa eseguire la copia di un puntatore alla lista degli argomenti: \begin{prototype}{stdarg.h}{void va\_copy(va\_list dest, va\_list src)} Copia l'attuale valore \param{src} del puntatore alla lista degli argomenti - su \param{desc}. + su \param{dest}. \end{prototype} \noindent anche in questo caso è buona norma chiudere ogni esecuzione di una \macro{va\_copy} con una corrispondente \macro{va\_end} sul nuovo puntatore @@ -1341,7 +1341,7 @@ In Linux gli argomenti dello stesso tipo sono passati allo stesso modo, sia che siano fissi sia che siano opzionali (alcuni sistemi trattano diversamente gli opzionali), ma dato che il prototipo non può specificare il tipo degli argomenti opzionali, questi verranno sempre promossi, pertanto nella ricezione -dei medesimi ocoorrerà tenerne conto (ad esempio un \type{char} verrà visto da +dei medesimi occorrerà tenerne conto (ad esempio un \type{char} verrà visto da \macro{va\_arg} come \type{int}). @@ -1373,7 +1373,7 @@ sovrascrittura dei dati. Per questo una delle regole fondamentali della programmazione in C è che all'uscita di una funzione non deve restare nessun riferimento alle variabili -locali; qualora sia necessirio utilizzare variabili che possano essere viste +locali; qualora sia necessario utilizzare variabili che possano essere viste anche dalla funzione chiamante queste devono essere allocate esplicitamente, o in maniera statica (usando variabili di tipo \type{static} o \type{extern}), o dinamicamente con una delle funzioni della famiglia \func{malloc}.