Namespaces
Variants

std::ostrstream:: ~ostrstream

From cppreference.net
virtual ~ostrstream ( ) ;
(C++98で非推奨)
(C++26で削除)

std::ostrstream オブジェクトを破棄します。これにより、メンバーである std::strstreambuf も破棄され、基盤となるバッファが動的に割り当てられており、かつ凍結されていない場合、解放関数が呼び出される可能性があります。

パラメータ

(なし)

注記

動的 ostrstream に対して str() が呼び出され、その後 freeze(false) が呼び出されなかった場合、このデストラクタはメモリリークを引き起こします。

#include <iostream>
#include <strstream>
int main()
{
    {
        std::ostrstream s; // 動的バッファ
        s << 1.23;
        std::cout << s.str() << '\n';
        s.freeze(false);
    } // デストラクタが呼び出され、バッファが解放される
    {
        std::ostrstream s;
        s << 1.23;
        std::cout << s.str() << '\n';
//      buf.freeze(false);
    } // デストラクタが呼び出され、メモリリークが発生
}

出力:

1.23
1.23