Función que retorna cadenad e caracteres, pthreads

rootag
16 de Septiembre del 2005
Para que una función devuelva una cadena de caracteres la cosa parece simple:

unsigned char *function();

No obstante además de que el compilador devuelve un error de devolucion de variable local, este método se vuelve inseguro cuando se utilizan pthreads.

Posible debe ser porque existen funciones como ctime que devulven una cadena de caracteres.

¿Algún libro para pulir estas deficiencias de conocimiento?

-El de kernighan C89 ya lo tengo.

chuidiang
16 de Septiembre del 2005
Hola:

Efectivamente es mala idea devolver un puntero a una variable local. La variable desaparece al salir de la función y el puntero queda apuntando a nada. La forma de devolver un char * es haciendo un new (o malloc) dentro de la funcion

char *funcion()
{
char *resultado = new char [10];
...
return resultado;
}

No entiendo por qué dices que es inseguro con pthreads. Una función es insegura según el código que hay dentro, no según lo que devuelve.

Se bueno.