私はいくつかのレガシーコードを見ていますが、かなりの量のstringstream
使用があります。コードは、これまでのところさまざまなタイプのメッセージを一般的に生成しています。場合によっては次のことを行っているという事実は別として:
std::ostringstream f1;
f1 << sDirectory << mFileName << sFileExtension << '\0';
他の人がやっている(ただのイラスト)
std::ostringstream f1;
f1 << sDirectory << mFileName << sFileExtension << std::ends;
これらの呼び出しは、さらにアクセスf1.str().c_str()
してnull終了する必要があるためだと思います。
これらの呼び出しに違いはありますか? http://en.cppreference.com/w/cpp/io/manip/endsから、std::ends がフラッシュしないことがわかります。std::ends はプラットフォーム (Linux/Windows/Mac) によって異なりますか? どちらかを優先する必要がありますか?
さらに、バッファの割り当てを解除できるようにするためfreeze(false)
に、スコープ内の後半 (使用後) に stringstreamを呼び出す必要があることを読みました ( http://en.cppreference.com/w/cpp/io/ostrstream/freeze)。繰り返しますが(おそらく私が読み間違えたか誤解した可能性があります)、呼び出しがないため、上記のすべてのストリームがリークしていることを示していますか?str()
freeze(false)
NB 参考までに、これは Visual Studio 2005/Windows 7 ですが、問題があるかどうかはわかりません。
密集していたらすみません...