重複の可能性:
例外コード C++ でのリーク
いくつかのコード (以下) に対して valgrind を実行しましたが、小さなメモリ リークがあると主張する出力に当惑しています。出力は次のとおりです。問題が見つかりません。
コード:
121 std::cerr << "exp "<<i<<" ";
122 exp->print(std::cerr);
123 std::cerr << std::endl;
出力:
==27313== 16 bytes in 1 blocks are definitely lost in loss record 1 of 6
==27313== at 0x1000525CF: malloc (vg_replace_malloc.c:266)
==27313== by 0x1000A90CF: __cxa_get_globals (in /usr/lib/libstdc++.6.0.9.dylib)
==27313== by 0x1000A8EA9: std::uncaught_exception() (in /usr/lib/libstdc++.6.0.9.dylib)
==27313== by 0x100088096: std::ostream::sentry::~sentry() (in /usr/lib/libstdc++.6.0.9.dylib)
==27313== by 0x100088BF9: std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char
> >&, char const*, long) (in /usr/lib/libstdc++.6.0.9.dylib)
==27313== by 0x100088C57: std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char
const*) (in /usr/lib/libstdc++.6.0.9.dylib)
==27313== by 0x1000028C4: test() (foo.cpp:121)
==27313== by 0x100002D92: main (foo.cpp:35)
呼び出し exp->print は、同じことをさらに行うことに注意してください。文字列定数が散在するいくつかの値を出力します。