In veel gevallen , bepaalt de gebruiker de vlucht of een programma een reeks van 10 elementen of 10.000 verwerken . Omdat de array size is niet tevoren bekend is , moet je opzij te zetten geheugen en laat het los terwijl het programma loopt . Dit geheugen beheer tijdens runtime is in de informatica bekend als dynamisch toewijzen van geheugen . Dit artikel richt zich op de functies gewijd aan dynamisch geheugen toewijzing in C. Wat je nodig hebt Integrated Development Environment met C + + Compiler Boek over C programmeren Toon Meer Instructions 1 Neem de bibliotheek bestand met de standaard bibliotheek definities . Dit is de " stdlib.h " bestand en het bevat , onder andere belangrijke C functies , alle functies die dynamisch geheugen toewijzing uit te voeren . Om deze bibliotheek bestand in uw programma op te nemen , plaatst u de volgende lijn aan de bovenkant van je bron /header file Voorbeeld : . Beelden # omvatten Pagina 2 Bepaal wat je wilt doen . Kies dan de functie van de volgende stappen die de actie geheugen - toewijzing die u wilt uitvoeren beste past . Gebruik malloc ( 3 ) voor een geheugenblok van bekende grootte . " Malloc " kent "grootte " bytes en keert terug een pointer naar het begin van het blok Prototype : void * malloc ( size_t grootte) ; Voorbeeld : . Int i ; char * buf ; printf ( " Voer tekst lengte : " ) ; scanf ( " % d " , & i ) ; buf = ( char * ) malloc ( i +1 ) ; if ( NULL == buf ) exit ( 1 ) ; Twitter //etc Employ calloc ( ) voor een serie van elementen waarin elk element heeft een grootte van meer dan een byte 4 . " Calloc " kent een brok van geheugen voor " num " elementen elk element zijn " grootte" bytes lang . Het geeft een pointer naar het begin van het blok Prototype : void * calloc ( size_t num, size_t grootte) ; Voorbeeld : . Int i , n ; < br > int * Parr ; printf ( "Geef aantal gehele getallen : " ) ; scanf ( " % d " , & i ) ; n = sizeof ( int ) ; Parr = ( int * ) calloc ( i , n ) ; if ( NULL == Parr ) exit ( 1 ) ; Twitter //etc 5 Gebruik realloc ( ) om de grootte van een geheugen blok wijzigen . " Realloc " uitbreidt of verkleint het geheugen blok van " grootte" bytes dat " ptr " wees naar Prototype : oid * realloc (void * ptr , size_t grootte) ; Voorbeeld : . Int num1 , num2 ; int * arr = NULL ; doen { printf ( " Voer een positief geheel getal : " ) ; scanf ( " % d " , & num1 ) ; terwijl ( 1 > num1 ) ; arr = ( int * ) calloc ( num1 , sizeof ( int ) ) ; if ( NULL == arr ) exit ( 1 ) ; doen { printf ( " Voer een positief geheel getal : " ) ; scanf ( " % d " , & num2 ) ; terwijl ( 1 > num2 ) ; arr = ( int * ) realloc ( arr , num2 * sizeof ( int ) ) ; if ( NULL == arr ) exit ( 1 ) ; Twitter //etc release een blok van het geheugen in de stappen 3 tot 5 toegekend met behulp van gratis ( ) 6 . " Gratis " geeft de geheugenblok dat begint bij geheugenlocatie die " ptr " wees naar Prototype : holtevrij (void * ptr ) ; Voorbeeld : . Int * buf ; buf = ( int * ) malloc ( 100 * sizeof ( int ) ) ; free ( buf ) ; Twitter //etc
|