Valgrindがsubstr呼び出しで不平を言っています。このValgrindエラーの原因は何ですか?
string Message::nextField(string& input) {
int posSeparator = input.find_first_of(SEPARATOR);
string temp;
temp = input.substr(0, posSeparator); //Error points to this line
input.erase(0, posSeparator + 1);
return temp;
}
エラーが行く:12個のブロックで
290バイトは間違いなく損失レコード1機能は、基本的には区切り文字で区切られた文字列の部分を返し、入力を解析している何
1の中で失われています。この機能は、次の定義を持つ別のクラスのメソッドから呼び出されます。
void doSomething(string input) {
input.erase(0,2);
string temp = nextField(input);
this->room = atoi(temp.c_str());
temp = input;
this->money = atoi(temp.c_str());
}
十分にここに含まれる奇妙なまたは重要な他に何もありません。 Eclipse IndigoのValgrindプロファイリングのValgrindのデフォルト設定を使用します。 アイデア
あなたは、コンパイル時に最適化されていますか?もしそうなら、しないでください。これはvalgrindからの偽の報告をたくさん引き起こします。 –
'string temp = input.substr(0、posSeparator);'と書くと、文字列を代入する代わりに初期化することができます。しかし、それがあなたの問題に関係することは明らかではありません。 –
@DavidHammenいいえ、私はそうではありません。 – Erandros