RAD Studio
ContentsIndex
PreviousUpNext
_expand

Header File 

process.h  

Category 

Memory Routines 

Prototype 

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

Description 

Grows or shrinks a heap block in place. 

This function attempts to change the size of an allocated memory block without moving the block's location in the heap. The data in the block are not changed, up to the smaller of the old and new sizes of the block. The block must have been allocated earlier with malloc, calloc, or realloc, and must not have been freed. 

Return Value 

If _expand is able to resize the block without moving it, _expand returns a pointer to the block, whose address is unchanged. If _expand is unsuccessful, it returns a NULL pointer and does not modify or resize the block. 

Example  

#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);
}

Portability

POSIX 
Win32 
ANSI C 
ANSI C++ 
 
 
 
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!