Función que retorna cadenad e caracteres, pthreads
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.
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.
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.
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.