It is general practice to check for NULL (whether memory is successfully allocated) after a malloc, some thing like
void *ptr = malloc(10);
if (ptr)
{
// do some thing usefull
}
else
{
// no memory. safely return/throw ...
}
with memory overcommit enabled in kernel, is there a chance of getting NULL. Should i follow the practice of religiously checking NULL for each allocation? Will malloc return NULL inspite of aggresive overcommit mechanism (i guess value 1)?
As a matter of fact Android kernel uses memory overcommit (not sure about the value, would love to know it(overcommit value) and its significance). Some of the frame work source(C/C++) code in android(might be 3rd party) doesn't check for NULL nor catch bad_alloc after allocations. Am i missing something?
There are some threads in SO regarding overcommit memory, but none of them resolved my confusion.
EDIT: If aggressive overcommit is being employed NULL wont be returned(assumption 1). When there is no physical memory available and up on trying to access the allocated memory (write in to the memory allocated), OOM will kill some process and allocates memory for the application till it gets killed in turn(assumption 2). In either case i dont see any need for cheking null (memory getting allocated or process getting killed).
am i right in my assumptions?
Portability is not a concern for this question.