\func{memalign} sarà un multiplo di \param{boundary} mentre per \func{valloc}
un multiplo della dimensione di una pagina di memoria. Nel caso della versione
fornita dalle \acr{glibc} la memoria allocata con queste funzioni deve essere
-liberata con \func{free}.
+liberata con \func{free}, cosa che non è detto accada con altre
+implementazioni.
Nessuna delle due funzioni ha una chiara standardizzazione (nessuna delle due
compare in POSIX.1), ed inoltre ci sono indicazione discordi sui file che ne
per questo motivo il loro uso è sconsigliato, essendo state sostituite dalla
nuova \funcd{posix\_memalign}, che è stata standardizzata in POSIX.1d; il suo
prototipo è:
+\begin{prototype}{stdlib.h}{posix\_memalign(void **memptr, size\_t alignment,
+ size\_t size) }
+ Alloca un buffer di memoria allineato ad un multiplo di \param{alignment}.
+
+ \bodydesc{La funzione restituisce 0 in caso di successo e \val{NULL} in caso
+ di fallimento, o uno dei due codici di errore \errcode{ENOMEM} o
+ \errcode{EINVAL}; \var{errno} non viene impostata.}
+\end{prototype}
+
+La funzione restituisce il puntatore al buffer allocato all'indirizzo indicato
+da \param{memptr}. La funzione fallisce nelle stesse condizioni delle due
+funzioni precedenti, ma a differenza di \func{memalign} restituisce un codice
+di errore \errcode{EINVAL} anche se \param{alignment} non è un multiplo della
+la dimensione di \code{sizeof(void *)}. Come per le precedenti la memoria
+allocata con \func{posix\_memalign} può essere disallocata con
+\func{free}.\footnote{che in caso questo caso è quanto richiesto dallo
+ standard.}
+% TODO: trattare le funzionalità avanzate di \func{malloc}
+
% TODO documentare \func{madvise}
% TODO documentare \func{mincore}
-% TODO: trattare le funzionalità avanzate di \func{malloc}
-% TODO: trattare \func{memalign}
-% TODO: trattare \func{valloc}
-% TODO: trattare \func{posix\_memalign}