> 1. When will memory allocation fail?
Typically when you run out of memory, or the pool has become too fragmented that no large blocks remain.

> 2. I have a scenario that it should not be fail at any cost for that what I should do?
So you're writing a safety critical system in C?