exception-safety

    4

    1答えて

    私はいくつかの標準コンテナの例外安全性を見るためのオンライン参照を探しています。 std::vectorの場合、push_backコールの前の状態を維持しますか?私はベクトルがまだ有効である(デストラクタが呼び出されていない)すべてのオブジェクトを持っていると仮定します。 push_backがstd::bad_alloc例外をスローした後に保証される保証std::vector?

    1

    6答えて

    可能性の重複: Side effects of throwing an exception inside a synchronized clause? ​​が例外セーフである場合、私は疑問に思って?同期ブロック内でキャッチされない例外が発生した場合、ロックは解除されますか?

    1

    2答えて

    私は単純なメモリアリーナアロケータを作成しており、例外安全性に関する小さな問題に直面しています。状況は、アロケータを呼び出すオブジェクトを割り当てるときです。メモリプールの目的は、一度に多数のオブジェクトを割り当て、プールが破棄されたときにそれらをすべて削除することです。 { MemoryArena m; std::string* ptr = m.Allocate<std::s

    3

    1答えて

    f()へのコールは例外から保護されていますか?言い換えれば inline std::auto_ptr<C> auto_new() { return std::auto_ptr<C>(new C()); } void f(std::auto_ptr<C> p1, std::auto_ptr<C> p2); // ... { f(auto_new(), au

    5

    2答えて

    スレッドセーフと例外セーフである必要があるコードがあります。以下のコードは私の問題の非常に単純化されたバージョンです: #include <mutex> #include <thread> std::mutex mutex; int n=0; class Counter{ public: Counter(){ std::lock_guard<std::mutex

    1

    1答えて

    私はInitOnceExecuteOnce WinAPI関数で例外安全性の問題があります。コールバック関数から例外がスローされるたびにデッドロックが発生します。コールバックはデータが正常に初期化されたかどうかを呼び出し側に伝えるブール値のフラグを返しますが、私がfalseを返すと、例外を元に戻すことはできません。私はこのように問題を解決しようとしました。 try { InitOnceE

    11

    3答えて

    明確にするために、make_uniqueを使用すると、1つではなく複数の割り当てがある場合に例外安全性が追加されます。 void f(T*, T*); f(new T, new T); は、正しくないながら?例えば void f(T*); f(new T); は、完全に(限り配分やものなど)安全な例外で

    5

    1答えて

    db, err := sql.Open("postgres", "…") if err != nil { log.Fatalln(err) } defer db.Close() tpl, err := template.ParseGlob("") if err != nil { log.Fatalln(err) } template.ParseGlob("")