Valgrind se queja de una invocación substrs.¿Cuál es la razón de este error de 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;
}
El error va:
290 bytes en 12 bloques están definitivamente perdidos en pérdida de registro 1 de 1
Lo que hace la función es básicamente analiza la entrada, volviendo porciones de cadena separada por el carácter separador. Esta función se invoca desde el método de otra clase con la siguiente definición:
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());
}
No hay nada raro o lo suficientemente importante como para ser incluido aquí. Utilizo la configuración predeterminada para Valgrind del perfil Valgrind de Eclipse Indigo. Alguna idea?
¿Está optimizando durante la compilación? Si es así, no. Esto causa una gran cantidad de informes espurios de valgrind. –
Probablemente podría escribir 'string temp = input.substr (0, posSeparador);' para inicializar la cadena en lugar de asignarla. Aunque no es obvio que tenga algo que ver con tu problema. –
@DavidHammen No, no lo soy. – Erandros