次のようなコードを書くと、valgrind の問題が発生します。
static std::string function(std::string test)
{
size_t pos = test.find(',');
if (pos == test.npos)
{
// no comma
//
pos = test.length();
}
return test.substr(0, pos); //Valgrind is reporting possibly lost bytes here
}
今私の質問は、代わりにこれを行うべきですか?
static std::string function(std::string test)
{
size_t pos = test.find(',');
if (pos == test.npos)
{
// no comma
//
pos = test.length();
}
static std::string temp = test.substr(0, pos);
return temp;
}
temp
静的な文字列を持つことは重要だと思います。なぜならfunction
静的であるため、返されるものはfunction
すべてカプセル化されたオブジェクトと同じ寿命を持つ必要があるからfunction
です。それとも私の分析に欠陥がありますか?
ありがとうございました