Checking memory allocations
Of course, the memory in our computers is finite
(even if it has several physical gigabytes, or is using virtual memory),
and if we keep calling malloc() in our programs,
we'll eventually exhaust available memory.
Note that a machine's operating system will probably not allocate
all memory to a single program, anyway.
There's a lot going on on a standard computer, and those other activities
all require memory, too.
For programs that perform more than a few allocations,
or even some potentially large allocations,
we need to check the value returned by malloc()
to determined if it succeeded:
#include <stdlib.h>
size_t bytes_wanted = 1000000 * sizeof(int);
int *huge_array = malloc( bytes_wanted );
if(huge_array == NULL) { // DID malloc FAIL?
printf("Cannot allocate %i bytes of memory\n", bytes_wanted);
exit( EXIT_FAILURE );
}
|
Strictly speaking, we should check all allocation requests
to both malloc() and calloc().
CITS2002 Systems Programming, Lecture 12, p5, 28th August 2024.
|