Valgrind показывает достижимые утечки в Stringstream
Я использую "std::stringstream", для преобразования значения "long" в "hex-string", для дальнейшего использования в коде.
Фрагмент кода, как показано ниже:
void initDisplayVariant(){
...
/// integer value to hex-string
std::stringstream sstream;
sstream << "0x"
<< std::setfill ('0') << std::setw(2)
<< std::hex << (int)frntDispVariant;
std::string frntDispVariantHex = sstream.str();
sstream.clear(); //clears out the stream-string
...
}
Но valgrind перечисляет местоположение в "достижимых утечках".
...
==6736== 0 bytes in 1 blocks are still reachable in loss record 1 of 143
==6736== at 0x4024045: operator new[](unsigned int) (vg_replace_malloc.c:299)
==6736== by 0x5232570: std::__numpunct_cache<char>::_M_cache(std::locale const&) (in /usr/lib/libstdc++.so.6.0.14)
==6736== by 0x5236684: std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_int<long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long) const (in /usr/lib/libstdc++.so.6.0.14)
==6736== by 0x523678D: std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long) const (in /usr/lib/libstdc++.so.6.0.14)
==6736== by 0x5241B43: std::ostream& std::ostream::_M_insert<long>(long) (in /usr/lib/libstdc++.so.6.0.14)
==6736== by 0x5241CB4: std::ostream::operator<<(int) (in /usr/lib/libstdc++.so.6.0.14)
==6736== by 0x808E76B: initDisplayVariant() (src.cpp:45)
...
Поскольку поток является локальным для метода и не должен существовать за пределами области действия метода (даже если он размещается внутри), поэтому контекст сообщения об утечке не ясен.
Любая подсказка или предложение?