Name
realloc
Synopsis
Resizes an allocated memory block
#include <stdlib.h> void *realloc( void *ptr, size_tn);
The realloc() function
replaces a memory block dynamically allocated by malloc(), calloc() or realloc() with a new one of size
n, and copies the contents of the
previous block to the new block, to the extent that the two blocks’
sizes permit. If the new block is larger, the values of the
remaining bytes are undetermined. The pointer argument passed to
realloc() is the address of the
block previously allocated, and the function’s return value is the
address of the new block. The new block may or may not begin at the
same address as the old block. realloc() returns a null pointer if the
new block could not be allocated as requested; in this case, it does
not release the old block, and your program can continue using
it.
If the first argument is a null pointer, realloc() allocates a new memory block,
behaving similarly to malloc().
Otherwise, if the pointer argument does not point to a memory block
allocated by malloc(), calloc(), or realloc(), or if it points to such a block
that has since been released by a call to free() or realloc(), then the behavior is
undefined.
Example
typedef struct { int len; float array[ ]; } DynArray_t; DynArray_t *daPtr = malloc( sizeof(DynArray_t) + 10*sizeof(float) ); if ( daPtr == NULL ) exit -1; daPtr->len = 10; for ( int i = 0; i < daPtr->len; ++i ) daPtr->array[i] = 1.0F/(i+1); /* daPtr->array[10] = 0.1F // Invalid array index! */ DynArray_t ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access