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 ...
Get C in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.