As far I know modern operating systems from Win95 - Vista are using swap files if the real memory is full. I did try on windows xp to malloc a much bigger amount of memory then I have and the system was still stable. It never returned NULL.
I am currently reading a C book and in one chapter it says that it may happen that the operating system can`t find a free block with that size and you should request less memory then for example 1/2. My problem is that this error catching adds loads of overhead to my code.
In which case is this still needed these days? Programming embeded devices?