a.reset(new A);

は

a = std::auto_ptr<A>(new A);

と等価ですよね

a = new A;

とは書けないんですか?

できないのならコンパイルエラーが出るべきだと思ってたんだけどランタイムエラーになってしまいました。

たぶん、このコードいっぱいあるのでsxzd;jzhp