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