Char** to String

Hola a todos!.

Estoy realizando un soft bajo C++ en Linux, donde tengo que comprobar los procesos que están corriendo en el sistema. En caso de que los encuentre, tengo que devolver una lista de ellos.

Para ello, hago uso de las libgtop de gnome, map de STL y alguna cosilla mas...

El caso, que en el apartado donde voy comprobando la lista de procesos y sus argumentos, los voy guardando en una variable tipo String, mas o menos de esta forma:

string Lista
char ** argv = glibtop_get_proc_argv(....);
char ** cur_arg = argv;

while(cur_arg)
Lista += *cur_arg;

A partir de aquí, con la variable Lista realizo busquedas en los maps y bla bla...

El caso, que el pasar de "Lista += cur_arg;" me da un memory leak acojonante, me lo reporta vallgrind y yo veo que sube como la espuma...

¿¿¿Hay alguna que otra forma de hacer la conversión de char** a String???

Muchas gracias por la ayuda!.
¿Seguro que estás interpretando bien la salida de valgrind?

En ese código no hay ningún leak.

- ferdy
Pues yo creo que sí. Viene a decir que XXXXX Blocks has definetively lost en la linea donde hago Lista += *cur_arg.

:-? :-?

Gracias Ferdy ;)
Desenvuelve el char con un for y lo vas concarenando en un string
Pues va a ser que el memory leak no estaba en esa conversión, si no en una parecida que hacía un línea mas abajo.

El caso, que si quieres hacer algo así:

string Lista
char ** argv = glibtop_get_proc_argv(....);
char ** cur_arg = argv;

while(cur_arg)
Lista += g_path_get_basename(*cur_arg);

Es en la asignación de donde está negrita lo que genera el memory leak. Basta con generar una variable internmedia
gchar * hola = g_path_get_basename(*cur_arg);
Lista.assign(hola);
g_free(hola);

Y listo...

Gracias a todos!
Ahí si había un leak :)
5 respuestas