簡単なC++/valgrind質問私は誰かが助けてくれることを望んでいます。valgrind&C++:文字バッファからstd :: stringを構築する
次のコードに対するvalgrindのを実行しているとき、私ははstdに関連する2つの可能なリークを取得する::文字列:
==10325== 17 bytes in 1 blocks are possibly lost in loss record 1 of 2
==10325== at 0x402569A: operator new(unsigned int) (vg_replace_malloc.c:255)
==10325== by 0x40CFD05: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
==10325== by 0x40D0B10: ??? (in /usr/lib/libstdc++.so.6.0.13)
==10325== by 0x40D0CF5: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
==10325== by 0x804872B: main (test.cc:9)
==10325==
==10325== 17 bytes in 1 blocks are possibly lost in loss record 2 of 2
==10325== at 0x402569A: operator new(unsigned int) (vg_replace_malloc.c:255)
==10325== by 0x40CFD05: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
==10325== by 0x40D0977: std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned int) (in /usr/lib/libstdc++.so.6.0.13)
==10325== by 0x40D17AC: std::string::reserve(unsigned int) (in /usr/lib/libstdc++.so.6.0.13)
==10325== by 0x40D1C7F: std::string::append(std::string const&) (in /usr/lib/libstdc++.so.6.0.13)
==10325== by 0x40D1D63: std::string::operator+=(std::string const&) (in /usr/lib/libstdc++.so.6.0.13)
==10325== by 0x804879D: main (test.cc:11)
それらを抑制するためにあまりにも多くの仕事ではないでしょう、そしてコードは十分に簡単思えますが私には、私が何をしているかを知っていることをバングラデントに知らせる前に、私がここで何かを見逃していないことを確認したいと思います。 exit()
を呼び出してプログラムを終了
#include <stdio.h>
#include <stdlib.h>
#include <string>
int main(int argc, char *argv[])
{
char buffer[8192];
sprintf(buffer, "ABCD");
std::string str(buffer);
std::string str2 = "";
str2 += str;
exit(EXIT_SUCCESS);
}
+1良いキャッチ! – wilhelmtell
確かに。どうもありがとう! – cubic1271