BSDのコードなのでMacOSXで動くはずもないです。

それに書き忘れましたがb[]の最後の0xe8,0xf7,0xbf,0xbfは
printf("%p",&b[0]);
を二つセットで逆にする感じで書き換えてください。
例えばここで書き込んでる0xe8,0xf7,0xbf,0xbfの場合はprintf("%p",&b[0]);で
bfbff7e8と表示されてる場合です。