In vielen Fällen legt der Anwender im laufenden Betrieb , ob ein Programm ein Array mit 10 Elementen oder 10.000 zu verarbeiten. Da die Array-Größe ist im Voraus nicht bekannt , muss man beiseite Speicher und lassen Sie sie während der Programmausführung . Das Speicher-Management während der Laufzeit wird in der Informatik als dynamische Speicherzuweisung bekannt. Dieser Artikel konzentriert sich auf die Funktionen gewidmet dynamische Speicherzuweisung in C. Things You
Integrated Development Environment mit C brauchen + + Compiler
Book on Programmiersprache C
Weitere Anweisungen anzeigen
1
Fügen Sie die Bibliothek -Datei mit den Standard-Bibliothek Definitionen . Dies ist die " stdlib.h "-Datei und beinhaltet , neben anderen wichtigen C -Funktionen, alle Funktionen, die dynamische Speicherzuweisung durchzuführen. Um diese Library-Datei in Ihrem Programm gehören , legen Sie die folgende Zeile an der Spitze der Source /Header-Datei
Beispiel: .
# Include Seite 2
Entscheiden Sie, was Sie tun möchten . Dann wählen Sie die Funktion aus den folgenden Schritten , die am besten den Speicher - Allokation Aktion, die Sie ausführen möchten.
3
Nutzungsbedingungen malloc ( ) für einen Speicherblock von bekannter Größe . " Malloc " ordnet "Größe" Byte und gibt einen Zeiger auf den Anfang des Blocks
Vorbild:
void * malloc ( size_t size );
Beispiel: .
Int i;
char * buf ; printf ("Geben Sie String-Länge :");
scanf ( "% d" , & i );
buf = (char *) malloc ( i +1) ;
if ( NULL == buf) exit ( 1); Twitter //etc
4
Employ calloc () für eine Reihe von Elementen , wobei jedes Element hat eine Größe von mehr als einem Byte . " Calloc " reserviert einen Teil des Speichers für " num" Elemente wobei jedes Element "size" Bytes in der Länge. Es gibt einen Zeiger auf den Anfang des Blocks
Vorbild:
void * calloc ( size_t num, size_t size );
Beispiel: .
Int i , n;
int * pArr ;
printf (" Geben Sie die Anzahl von ganzen Zahlen :");
scanf ( "% d" , & i );
n = sizeof ( int);
pArr = (int *) calloc (i, n );
if ( NULL == pArr ) exit ( 1); Twitter //etc
5
Nutzen realloc () , um die Größe von einem Speicherblock ändern. " Realloc " erweitert oder reduziert den Speicherblock "size" Bytes " ptr ", um darauf
Vorbild:
oid * realloc (void * ptr , size_t size );
Beispiel: .
Int num1 , num2 ;
int * arr = NULL;
do {
printf ( "Geben Sie eine positive ganze Zahl :");
scanf ( "% d" , & num1 );
while ( 1> num1 );
arr = (int *) calloc ( num1 , sizeof ( int) );
if ( NULL == arr) exit ( 1);
do {
printf (" Geben Sie eine weitere positive ganze Zahl : ");
scanf ( "% d " , & num2 );
while (1 > num2 );
arr = (int *) realloc ( arr, num2 * sizeof ( int) );
if ( NULL == arr) exit ( 1); Twitter //etc Seite 6
Veröffentlichung ein Speicherblock in Schritt 3 bis 5 zugeordnet , indem free () . "Free" gibt den Speicher -Block, der an der Speicherstelle beginnt das "PTR" wies auf
Vorbild:
hohlraumfreie (void * ptr) ;
Beispiel: .
Int * buf ;
buf = (int *) malloc ( 100 * sizeof ( int) ); free ( buf) ; Twitter //etc