STL <ios>
ライブラリ関数この関数はrdbuf(...)はポインタを返します - 指しているバッファを所有していますか?
streambuf* std::basic_ios::rdbuf (streambuf* sb);
あり、ストリームに関連付けられたストリームバッファを変更するために使用することができます。これを使用すると、以前使用されていたstreambufへのポインタが返されます。誰がポインターを所有しているのか、その生涯が何であるのかははっきりしない。標準(27.5.5.3/5)は単に
と返されます。前の値は
rdbuf()
です。
これはあまり有益ではありません。このポインタが有効である期間について保証はありますか?呼び出しコードはdelete
で終わったら一度それをしなければなりませんか?
ありがとうございます - この動作はどこかの規格で指定されていますか? – Mohan
明示的にはありません。 rdbuf()が返すバッファの所有者は指定されていません。明らかに、発信者がそれを所有していなければ、それを削除することはできません。 –
重要:もしあなたがバッファをインストールし、それを 'new'で割り当てたとしても、ストリームがそれで終わるまで、バッファを' delete'しないでください。 – MSalters