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
sizebytes.-
void *calloc( size_tn, size_tsize); Allocates enough memory to hold an array of
nelements, 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
ptrto 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.-
voidfree( 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 ...
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