X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=1fbfc066b28f187c2629615f12537be93288a89d;hp=c5f9187743a3da98a40164f0fd77c047295df12d;hb=853abb8180764f5c24c9338164c4479c4d94ba2a;hpb=fd86592a845b5f76ad43ba2374ca0b798ffca595 diff --git a/process.tex b/process.tex index c5f9187..1fbfc06 100644 --- a/process.tex +++ b/process.tex @@ -555,8 +555,8 @@ tollerante nei confronti di piccoli errori come quello di chiamate doppie a Il problema più comune e più difficile da risolvere che si incontra con le routine di allocazione è quando non viene opportunamente liberata la memoria -non più utilizzata, quello che in inglese viene chiamato \textit{memory-leak}, -cioè una \textsl{perdita di memoria}. +non più utilizzata, quello che in inglese viene chiamato \textit{memory + leak}\index{memory leak}, cioè una \textsl{perdita di memoria}. Un caso tipico che illustra il problema è quello in cui in una subroutine si alloca della memoria per uso locale senza liberarla prima di uscire. La @@ -569,7 +569,7 @@ Il problema momento, in corrispondenza ad una qualunque chiamata di \func{malloc}, che può essere in una sezione del codice che non ha alcuna relazione con la subroutine che contiene l'errore. Per questo motivo è sempre molto difficile trovare un -\textit{memory leak}. +\textit{memory leak}\index{memory leak}. In C e C++ il problema è particolarmente sentito. In C++, per mezzo della programmazione ad oggetti, il problema dei \textit{memory leak} è notevolmente @@ -615,10 +615,10 @@ molto complesse riguardo l'allocazione della memoria. \label{sec:proc_mem_alloca} Una possibile alternativa all'uso di \func{malloc}, che non soffre dei -problemi di \textit{memory leak} descritti in precedenza, è la funzione -\funcd{alloca}, che invece di allocare la memoria nello heap usa il segmento -di stack della funzione corrente. La sintassi è identica a quella di -\func{malloc}, il suo prototipo è: +problemi di \textit{memory leak}\index{memory leak} descritti in precedenza, è +la funzione \funcd{alloca}, che invece di allocare la memoria nello heap usa +il segmento di stack della funzione corrente. La sintassi è identica a quella +di \func{malloc}, il suo prototipo è: \begin{prototype}{stdlib.h}{void *alloca(size\_t size)} Alloca \param{size} byte nello stack. @@ -634,10 +634,10 @@ quindi 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 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}). +evitare alla radice i problemi di memory leak\index{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}). Un altro vantaggio è che in Linux la funzione è molto più veloce di \func{malloc} e non viene sprecato spazio, infatti non è necessario gestire un