_expand
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++ |
---|---|---|---|
+ |