規格を確認すると 3.6.1 p4 に exit() 呼び出し時の動作が書いてあった。 > Calling the function > void exit(int); > declared in <cstdlib> terminates the program without leaving the current block and hence without > destroying any objects with automatic storage duration.
これに加えて 3.7.2 Automatic storage duration p1 から > The storage for these objects lasts until the block in which they are created > exits. ということで、スタックは保持されたままなので atexit() で自動変数のデストラクタを 呼びだしても問題ないみたい。