私は次の戦略を実装することを考えています:
クラスメソッドで例外を処理する場合、std::bad_alloc
例外を再スローする前に、可能な限り/意味のある場合はいつでもメモリを解放しようとします。したがって、オブジェクトに解放可能なstdコンテナ(std :: vector <>)がある場合、次のようになります。
catch( std::bad_alloc& e ) {
//free any memory in my std::vector member, how? by doing this dirty hack
~myVec();
new ( &myVec) std::vector<myType>();
throw; //rethrow exception
}
質問:上記の「ダーティハック」は、例外が展開されている間にメモリの割り当てを解除するための安全な戦略ですか?長所と短所は何ですか?