Dynamic Memory Management
In order to make efficient use of memory, it is important for a program to be able to allocate and release blocks of memory dynamically during execution. The functions for dynamic memory management are declared in the header file stdlib.h .
A successful call to one of the memory allocation functions returns
the beginning address of a memory block of the requested size. The
return value has the type “pointer to
void
“. The program can then use
the allocated block in any way desired. When a block of memory is no
longer needed, it should be released. All dynamically allocated
memory blocks are automatically released when the program exits.
-
void *
malloc
( size_tsize
); Allocates a memory block of
size
bytes.-
void *
calloc
( size_tn
, size_tsize
); Allocates enough memory to hold an array of
n
elements, each of which has the sizesize
, and initializes every byte with the value0
.-
void *
realloc
( void *ptr
, size_tn
); Changes the length of the memory block referenced by
ptr
to the new lengthn
. If the memory block has to be moved in order to provide the new size, then its current contents are automatically copied to the new location.-
void
free
( void *ptr
); Releases the memory block referenced by
ptr
.
The following example uses malloc
to allocate
space for an array of 1000 integers:
// Get space for 1000 int values: int *iArr = (int*)malloc( 1000 * sizeof( int ) );
These functions can be called as often as necessary, and in any order. The pointer argument ...
Get C Pocket Reference 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.