malloc系関数でいつも何も考えず
p = (char *)malloc(sizeof(char) * mojisuu);
if(p == NULL) return;
みたくやってます。でもよく考えると何故mallocが失敗するんでしょうか?
ヒープを使い切ったとか?mallocが失敗する理由って主に何があるの?
unixかwindowsでお願いします。

以前
if((p = (char *)malloc(sizeof(char) * mojisuu))==NULL)
   p = (char *)malloc(sizeof(char) * mojisuu);
見たく、一度失敗したらもう一回繰り返しているのみたことあるけど
こういうやり方って意味あるんでしょうか?