_expand

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu process.h - Index


Header-Datei

process.h

Kategorie

Speicherroutinen

Prototyp

void *_expand(void *block, size_t size);

Beschreibung

Vergrößert oder verkleinert einen Speicherblock auf dem Heap.

Diese Funktion versucht, die Größe eines zugewiesenen Speicherblocks zu ändern, ohne ihn an eine andere Position auf dem Heap zu verschieben. Die Daten in dem von der Vergrößerung oder Verkleinerung nicht betroffenen Brereich des Blocks werden nicht verändert. Der Block muss mit malloc, calloc oder realloc zugewiesen worden sein und darf noch nicht freigegeben sein.

Rückgabewert

Wenn _expand die Größe des Blocks ändern kann, ohne ihn zu verschieben, gibt die Funktion einen Zeiger auf den Block zurück, dessen Adresse unverändert ist. Wurde _expand nicht erfolgreich ausgeführt, gibt die Funktion einen NULL-Zeiger zurück und ändert die Größe des Blocks nicht.

Beispiel



 #include <stdio.h>
 #include <malloc.h>
 #include <stdlib.h>
 void main(void)
 {
   char *bufchar, *newbuf;
   printf( "Allocate a 512 element buffer\n" );
   if( (bufchar = (char *) calloc(512, sizeof( char ) )) == NULL)
     exit( 1 );
   printf( "Allocated %d bytes at %Fp\n",
     _msize ( bufchar ), (void __far *)bufchar );
   if ((newbuf = (char *) _expand (bufchar, 1024)) == NULL)
     printf ("cannot expand");
   else {
     bufchar = newbuf;
     printf (" Expanded block to %d bytes at %Fp\n",
       _msize( bufchar ) , (void __far *)bufchar );
   }
   free( bufchar );
   exit(0);
 }



Portabilität



POSIX Win32 ANSI C ANSI C++

+