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