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.
