I mange tilfeller bestemmer brukeren på fly om et program vil behandle en rekke 10 elementer eller 10000 . Fordi matrisen størrelse er ukjent på forhånd , må du sette av minne og slipp den under kjøring av programmet . Dette minnehåndtering under kjøring er kjent i informatikk som dynamisk minne allokering . Denne artikkelen fokuserer på funksjonene dedikert til dynamisk minne allokering i C. Du trenger
Integrated Development Environment med C + + Compiler Reserver på C-programmering
Vis flere instruksjoner
1
Inkluder biblioteket filen med standard bibliotek definisjoner . Dette er " stdlib.h "-filen og det inkluderer blant andre viktige C -funksjoner , alle funksjoner som utfører dynamisk minne allokering . For å inkludere dette biblioteket filen i programmet , sett inn følgende linje på toppen av din kilde /header -fil
Eksempel : .
# Include
2
Bestem hva du vil gjøre . Deretter plukke funksjonen fra følgende trinn som best passer til minne - allokering handlingen du vil utføre.
3
Bruk malloc ( ) for et minne blokk med kjent størrelse . " Malloc " tildeler " size" bytes og returnerer en peker til begynnelsen av blokken
Prototype : en void * malloc ( size_t størrelse);
Eksempel : .
Int i ;
røye * buf ; printf ("Skriv strenglengde : ");
scanf ( "% d" , og i) ;
buf = ( char * ) malloc (i +1) ;
if ( NULL == BUF) exit ( 1 ) ; Twitter //etc
4
Ansett calloc ( ) for en rekke elementer der hvert element har en størrelse på mer enn en byte . " Calloc " tildeler en mengde minne for " num " elementer hvert element være " size" Byte . Den returnerer en peker til begynnelsen av blokken
Prototype : en void * calloc ( size_t num , size_t størrelse);
Eksempel : .
Int i , n;
int * Parr ;
printf ("Skriv inn antall heltall : ");
scanf ( "% d" , og i) ;
n = sizeof ( int ) ;
Parr = ( int * ) calloc (i, n ) ;
if ( NULL == Parr ) exit ( 1 ) ; Twitter //etc
5
utnytte realloc () for å endre størrelsen på et minne blokk . " RealLOC " utvider eller reduserer minnet blokk med " size" byte som " ptr " pekte på
Prototype : en oid * realloc (void * ptr , size_t størrelse);
Eksempel : .
Int num1 , num2 ;
int * arr = NULL ;
trenger {
printf ("Skriv inn et positivt heltall : ");
scanf ( "% d" , & num1 ) ;
while ( 1 > num1 ) ;
arr = ( int * ) calloc ( num1 , sizeof ( int ));
if ( NULL == arr ) exit ( 1 ) ;
do {
printf ( " skriv inn et annet positivt heltall : ");
scanf ( "% d " , & num2 ) ;
mens 1 ( > num2 ) ;
arr = ( int * ) realloc (arr , num2 * sizeof ( int ) ) ;
if ( NULL == arr ) exit ( 1 ) ; Twitter //etc
6
Slipp en blokk med minne som er tildelt i trinn 3 til 5 ved å bruke gratis ( ) . "Free" frigjør minne blokk som starter på minneområde som " ptr " pekte på
Prototype : en ugyldig gratis (void * ptr ) ;
Eksempel : .
Int * buf ;
buf = ( int * ) malloc ( 100 * sizeof ( int ));
gratis ( BUF) ; Twitter //etc