>>507
助かります即レスありがとうございます

やはり、(い)、(う)行が動作したのは偶然と考え、(あ)行で2件mallocするのが
規格に則ったC言語の処方なのでしょうか?

疑問に思ったのは、実行時にセグメンテーションエラーが出なかったことなのです。
メモリ上に存在しない(b+1)領域を参照してるのに、なぜプログラムが落ちないのか、
それが不思議でなりません。