Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako to urobiť Dynamic Storage Allocation v C

V mnohých prípadoch , užívateľ určuje v reálnom čase , či bude program spracovávať pole 10 prvkov alebo 10000 . Vzhľadom k tomu , veľkosť poľa je vopred známa , budete musieť vyčleniť pamäť a uvoľniť ju počas vykonávania programu . Táto správa pamäte za behu je známa v oblasti počítačovej vedy ako dynamické prideľovanie pamäte . Tento článok sa zameriava na funkcie venovaných dynamické prideľovanie pamäte v C. vecí , ktoré budete potrebovať
integrované vývojové prostredie C + + compiler
knihy o C programovací
Zobraziť ďalšie inštrukcie
1

Zahrnúť súbor knižnice pomocou štandardných definícií knižnice . Jedná sa o súbor " stdlib.h " a to zahŕňa , okrem ďalších dôležitých funkcií C , všetky funkcie , ktoré vykonávajú dynamické prideľovanie pamäte . Ak chcete zahrnúť tento súbor knižnice vo vašom programe , vložte nasledujúci riadok na začiatok súboru zdroj /záhlavia
Príklad : . Fotografie # zahŕňajú
2

Rozhodnite sa , čo chcete robiť . Potom vyberte funkciu z nasledujúcich krokov , ktoré najlepšie zodpovedá akciu pamäti prideľovanie , ktorú chcete vykonať .
3

Použite malloc ( ) na bloku pamäti o známej veľkosti . " Malloc " prideľuje " veľkosť " bytov a vráti ukazovateľ na začiatok bloku
Prototype :
void * malloc ( size size_t ) ;
Príklad : .
Int i ;
char * buf ; printf ( " Zadajte dĺžku reťazca : " ) ;
scanf ( " % d " , & i ) ;
buf = ( char * ) malloc ( i +1 ) ;
if ( NULL == buf ) exit ( 1 ) ;
//etc Stránka 4

Zamestnávať calloc ( ) pre pole prvkov , kde každý prvok má veľkosť väčšiu ako bajt . " Calloc " prideľuje kus pamäte pre " num " prvkov , každý prvok je " veľkosť " bajtov . Vracia ukazovateľ na začiatok bloku
Prototype :
void * calloc ( size_t num , size_t veľkosť ) ;

Príklad : .
Int i , n ,
int * Parr ,
printf ( " Zadajte počet čísiel : " ) ;
scanf ( " % d " , & i ) ;
n = sizeof ( int ) ;
Parr = ( int * ) calloc ( i , n) ;
if ( NULL == Parr ) exit ( 1 ) ;
//etc
5

Využite realloc ( ) pre zmenu veľkosti bloku pamäte . " Realloc " rozširuje alebo zmenšuje pamäťový blok " veľkosti " bajtov , že " ptr " ukázal na
Prototype : .
Oid * realloc ( void * ptr , size_t veľkosť ) ;
Príklad :
int num1 , num2 ;
int * arr = NULL ;
robiť {
printf ( " Zadajte kladné celé číslo : " ) ;
scanf ( " % d " , & num1 ) ;
while ( 1 > num1 ) ;
arr = ( int * ) calloc ( num1 , sizeof ( int ) ) ;
if ( NULL == arr ) exit ( 1 ) ;
robiť {
printf ( " Zadajte ďalšie pozitívne celé číslo : " ) ; klipart scanf ( " % d " , & num2 ) ;
while ( 1 > num2 ) ;
arr = ( int * ) realloc ( arr , num2 * sizeof ( int ) ) ;
if ( NULL == arr ) exit ( 1 ) ;
//etc Praha 6

Uvoľnite blok pamäte pridelené v krokoch 3 až 5 pomocou free ( ) . " Bezplatne " uvoľní blok pamäti , ktorý začína na mieste pamäti , že " ptr " ukázal na
Prototype : .
Void zadarmo ( void * ptr ) ;
Príklad :
int * buf ;
buf = ( int * ) malloc ( 100 * sizeof ( int ) ) ;
zadarmo ( buf ) ;
//etc

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené