C/Gestione della memoria: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
Nessun oggetto della modifica
Etichetta: Editor wikitesto 2017
 
Riga 29:
Il valore restituito da queste funzioni è di tipo void * cioè una specie di puntatore neutro, indipendente dal tipo di dati da utilizzare. Per questo, in linea di principio, prima di assegnare a un puntatore il risultato dell'esecuzione di queste funzioni di allocazione, è opportuno eseguire un cast (conversione) al tipo di dato desiderato.
 
<sourcesyntaxhighlight lang="c">
int *pi = NULL;
/* ... */
Riga 45:
/* ... */
}
</syntaxhighlight>
</source>
Come si può osservare dall'esempio, il cast viene eseguito con la notazione (int *) che esegue la conversione esplicita in un puntatore a '''int'''. Lo standard C non richiede l'utilizzo di questo cast, quindi l'esempio si può ridurre al modo seguente:
 
Riga 57:
 
È necessario evitare di deallocare più di una volta la stessa area di memoria, perché ciò potrebbe provocare effetti imprevedibili.
<sourcesyntaxhighlight lang="c">
int *pi = NULL;
/* ... */
Riga 76:
/* ... */
}
</syntaxhighlight>
</source>
=== realloc() ===
Lo standard prevede una funzione ulteriore, per la riallocazione di memoria: '''realloc()'''. Questa funzione si usa per ridefinire l'area di memoria con una dimensione differente (proprio in virtù del fatto che stiamo usando la memoria "dinamica):