>Linuxなら(mallocが)失敗しててもずっと非NULL値を返すよ。
これは大嘘だぞ。
試しに

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *p;
while(p = malloc(0x7FFFFFF));
printf("malloc failed %p\n",p);
return 0;
}
これ実行してみ? もしお前のいうとおりならmalloc failedと出力されることはないよな。