話の流れ、よく分かってないけど、

> *x = a - 1;

大体の処理系はここで落ちるんじゃないか?