X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=333dea82bde61cc67467b6e0e0354bbb206cf15b;hp=0ca84e1ae3d4d6fea72496775311966a3bffbdf5;hb=49dd18adf5e37bb4674bd0b6ef6875e546f79764;hpb=4504f0bd1ad5cb4b933e6ee80a767103e517376f diff --git a/process.tex b/process.tex index 0ca84e1..333dea8 100644 --- a/process.tex +++ b/process.tex @@ -435,34 +435,32 @@ maniera indiretta attraverso dei puntatori. Le funzioni previste dallo standard ANSI C per la gestione della memoria sono quattro, i prototipi sono i seguenti: -\begin{prototype}{stdlib.h}{void *calloc(size\_t size)} +\begin{functions} +\headdecl{stdlib.h} +\funcdecl{void *calloc(size\_t size)} Alloca \texttt{size} bytes nello heap. La memoria viene inizializzata a 0. La funzione restituisce il puntatore alla zona di memoria allocata in caso di successo e \texttt{NULL} in caso di fallimento, nel qual caso \texttt{errno} viene settata a \texttt{ENOMEM}. -\end{prototype} -\begin{prototype}{stdlib.h}{void *malloc(size\_t size)} +\funcdecl{void *malloc(size\_t size)} Alloca \texttt{size} bytes nello heap. La memoria non viene inizializzata. La funzione restituisce il puntatore alla zona di memoria allocata in caso di successo e \texttt{NULL} in caso di fallimento, nel qual caso \texttt{errno} viene settata a \texttt{ENOMEM}. -\end{prototype} -\begin{prototype}{stdlib.h}{void free(void *ptr)} - Disalloca lo spazio di memoria puntato da \texttt{ptr}. - - La funzione non ritorna nulla. -\end{prototype} -\begin{prototype}{stdlib.h}{void *realloc(void *ptr, size\_t size)} +\funcdecl{void *realloc(void *ptr, size\_t size)} Cambia la dimensione del blocco allocato all'indirizzo \texttt{ptr} portandola a \texttt{size}. La funzione restituisce il puntatore alla zona di memoria allocata in caso di successo e \texttt{NULL} in caso di fallimento, nel qual caso \texttt{errno} viene settata a \texttt{ENOMEM}. -\end{prototype} +\funcdecl{void free(void *ptr)} + Disalloca lo spazio di memoria puntato da \texttt{ptr}. + La funzione non ritorna nulla. +\end{functions} Il puntatore che le funzioni di allocazione ritornano è garantito essere sempre correttamente allineato per tutti i tipi di dati; ad esempio sulle macchine a 32 bit in genere è allineato a multipli di 4 bytes e sulle macchine @@ -655,8 +653,8 @@ per efficiente, quello dell'uscita in caso di errore. Il C però non consente di effettuare un salto ad una label definita in -un'altra funzione, per cui se l'errore avviene in funzioni profondamente -annidate +un'altra funzione, per cui se l'errore avviene in funzioni profondamente +annidate occorre usare la funzione \func{longjump}. \section{La gestione di parametri e opzioni}