I mange tilfælde bestemmer brugeren på flue , om et program vil behandle en vifte af 10 elementer eller 10.000 . Fordi array-størrelse er ukendt på forhånd , er du nødt til at afsætte hukommelse og slip den under udførelsen af programmet . Denne hukommelse forvaltning i runtime er kendt i datalogi så dynamisk allokering af hukommelse . Denne artikel fokuserer på de funktioner, dedikeret til dynamisk allokering af hukommelse i C. Ting du skal
Integrated Development Environment med C + + Compiler
bog om C programmering
Vis Flere Instruktioner
1
Medtag biblioteket fil med standard bibliotek definitioner. Dette er " stdlib.h " fil, og det omfatter blandt andre vigtige C- funktioner , alle funktioner, der udfører dynamisk allokering af hukommelse . At medtage denne biblioteksfil i dit program , skal du indsætte følgende linje i toppen af din kilde /header fil
Eksempel: .
# Include
2
Beslut hvad du vil gøre. Derefter vælge funktionen fra de følgende trin , der bedst passer til memory - allokering handling, du vil udføre.
3
Brug malloc () for en hukommelse blok af kendt størrelse . " Malloc " allokerer "størrelse " bytes og returnerer en pointer til begyndelsen af blokken
Prototype : Hej void * malloc ( size_t størrelse ),
Eksempel: .
Int i ;
char * buf ; printf ("Indtast snorlængde :");
scanf ("% d " , & i)
buf = ( char * ) malloc ( i +1 ),
if ( NULL == bUF) exit (1), Twitter //etc
4
Ansæt calloc ( ) for en bred vifte af elementer, hvor hvert element har en størrelse på mere end en byte . " Calloc " tildeler en luns af hukommelse for " num " elementer hvert element er "størrelse" bytes i længden. Den returnerer en pointer til begyndelsen af blokken
Prototype : Hej void * calloc ( size_t num , size_t størrelse ),
Eksempel: .
Int i , n ; < br > int * parr
printf (" Indtast antal heltal :");
scanf ("% d " , & i)
n = sizeof ( int ),
Parr = ( int * ) calloc (i , n ),
if ( NULL == Parr ) exit (1), Twitter //etc
5
Udnyt realloc () for at ændre størrelsen på en hukommelse blok. " Realloc " Udvider eller reducerer memory blok af "størrelse" byte at " ptr " pegede på
Prototype : Hej OID * realloc (void * ptr , size_t størrelse ),
Eksempel: .
Int num1 , num2 ,
int * arr = NULL ;
gør {
printf ("Indtast et positivt heltal :");
scanf ("% d " , & num1 ),
while ( 1> num1 )
arr = ( int * ) calloc ( num1 , sizeof ( int )),
if ( NULL == arr ) exit (1),
do {
printf (" Indtast et andet positivt heltal : ");
scanf ("% d " , & num2 ),
mens (1 > num2 )
arr = ( int * ) realloc ( arr , num2 * sizeof ( int ) ),
if ( NULL == arr ) exit (1), Twitter //etc
6
Frigive en blok af hukommelse allokeret i trin 3 til 5 ved hjælp af gratis (). "Fri" frigiver hukommelse blok, der starter ved hukommelsesplacering, " ptr " pegede på
Prototype : Hej void gratis ( void * ptr )
Eksempel: .
Int * buf ;
buf = ( int * ) malloc (100 * sizeof ( int )),
gratis (BUF ), Twitter //etc