In molti casi , l' utente determina al volo se un programma elaborerà un array di 10 elementi o 10.000 . Poiché la dimensione della matrice è conosciuta in anticipo, devi mettere da parte la memoria e rilasciarlo durante l'esecuzione del programma . Questa gestione della memoria durante l'esecuzione è noto in informatica come allocazione dinamica della memoria . Questo articolo si concentra sulle funzioni dedicate alla allocazione dinamica della memoria in C. Hai bisogno 
 ambiente di sviluppo integrato con C + + Compiler 
 Prenota su C programmazione 
 Mostra più istruzioni 
 1 
 Includere il file di libreria con le definizioni della libreria standard . Questo è il file " stdlib.h " e comprende , tra le altre caratteristiche importanti C , tutte le funzioni che svolgono allocazione dinamica della memoria . Per includere questo file di libreria nel programma , inserire la seguente riga nella parte superiore del file di intestazione di origine /Games Esempio : . 
 # Include 
 2 
 decidere cosa si vuole fare. Poi scegliere la funzione da i seguenti passaggi sono più adatte all'azione di memoria di allocazione che si desidera eseguire . 
 3 
 Usa malloc ( ) per un blocco di memoria di dimensioni note . " Malloc " alloca byte "dimensione" e restituisce un puntatore all'inizio del blocco 
 Prototipo : 
 void * malloc ( size_t size ) ; 
 Esempio : . 
 Int i ; 
 char * buf ; printf ( "Inserire la lunghezza della stringa : " ) ; 
 scanf ( " % d" , & i ) ; 
 buf = ( char * ) malloc ( i +1) ; 
 if ( NULL == buf ) exit ( 1) ; 
 //etc 
 4 
 Employ calloc ( ) per una serie di elementi in cui ogni elemento ha una dimensione di più di un byte . " Calloc " alloca un blocco di memoria per gli elementi "Num " ogni elemento essendo byte "dimensione" di lunghezza. Esso restituisce un puntatore all'inizio del blocco 
 Prototipo : 
 void * calloc ( size_t num , size_t size ) ; 
 
 Esempio : . 
 Int i , n; 
 int * Parr ; 
 printf ("Inserire il numero di interi : "); 
 scanf ( " % d" , & i ) ; 
 n = sizeof ( int); 
 Parr = (int * ) calloc (i, n) ; 
 if ( NULL == Parr ) exit ( 1) ; 
 //etc 
 5 
 Utilizzare realloc () per modificare la dimensione di un blocco di memoria . " Realloc " si espande o riduce il blocco di memoria di byte "dimensione" che " ptr " indicò 
 prototipo 
 OID * realloc (void * ptr , size_t size ) ; 
 Esempio : . 
 Int num1 , num2 ; 
 int * arr = NULL; 
 non 
 { printf ( "Inserire un numero intero positivo : " ) ; 
 scanf ( " % d" , & num1 ) ; 
 while ( 1 > num1 ) ; 
 arr = ( int * ) calloc ( num1 , sizeof ( int) ) ; 
 if ( NULL == arr) exit ( 1) ; 
 do { 
 printf ( " Immettere un altro numero intero positivo : " ) ; 
 scanf ( " % d " , & num2 ) ; 
 while (1 > num2 ) ; 
 arr = ( int * ) realloc ( arr , num2 * sizeof ( int ) ) ; 
 if ( NULL == arr) exit ( 1) ; 
 //etc Pagina 6 
 uscita di un blocco di memoria allocata nei passi 3-5 usando free () . "Free" rilascia il blocco di memoria che inizia a memoria che "PTR" indicò 
 prototipo 
 vuoto libero (void * ptr ) ; 
 Esempio : . 
 Int * buf ; 
 buf = ( int * ) malloc ( 100 * sizeof ( int) ) ; free ( buf ) ; 
 //etc