Existe uma necessidade de verificar NULL após a alocação de memória, quando o kernel usa overcommit memory

É prática geral verificar NULL (se a memória é alocada com sucesso) após um malloc (), algo como

void *ptr = malloc(10);    
if (ptr != NULL) {  
  // do some thing usefull  
} else {  
 // no memory. safely return/throw ...  
}  

com overcommit de memória ativado no kernel, existe a chance de obter NULL? Devo seguir a prática de religiosamente verificar NULL para cada alocação? O malloc retornará NULL, apesar do agressivo mecanismo de supercomprometimento (acho que o valor 1)?

Por uma questão de fato, o kernel do Android usa supercomprometimento de memória (não tem certeza sobre o valor, adoraria conhecê-lo (supercomprimir valor) e seu significado). Parte do código de origem da estrutura (C / C ++) no Android (pode ser de terceiros) não verifica NULL nem pega bad_alloc após as alocações. Estou esquecendo de algo?

Existem algumas threads no SO relacionadas à supercomprometimento de memória, mas nenhuma delas resolveu minha confusão.

EDITAR: Se um supercomprometimento agressivo estiver sendo empregado, NULL não será retornado (suposição 1). Quando não houver memória física disponível e tentar acessar a memória alocada (gravar na memória alocada), o OOM interromperá algum processo e alocará memória para o aplicativo até que seja morto por vez (suposição 2). Em ambos os casos, não vejo necessidade de usar NULL (memória sendo alocada ou processo sendo morto). Estou certo em minhas suposições?
Portabilidade não é uma preocupação para esta questão.

questionAnswers(5)

yourAnswerToTheQuestion