Código:
Cuando ejecuto obtengo:void InsertarDatos(void *arg) { Email *nuevo; char *cuerpo; pthread_mutex_lock(&b->mutex); //protegiendo la región crítica (b->nEmails)++; cuerpo=(char *) malloc (sizeof (char)); nuevo=(Email *) malloc (sizeof (Email)); nuevo->dato.id=b->nEmails; nuevo->dato.from="xxxx"; sprintf(cuerpo,"Cuerpo del email %d",b->nEmails); nuevo->dato.body=cuerpo; nuevo->next=NULL; .......
Identificador de email: 12576
Remitente: xxxx
Cuerpo del mensaje: Cuerpo del email 1
---------------------------------------
Identificador de email: 12832
Remitente: xxxx
Cuerpo del mensaje: Cuerpo del email 2
---------------------------------------
Y debería ser Identificador de email: 1 y luego 2.
He estado depurando y si miro la variable nuevo->dato.id despues de nuevo->dato.id=b->nEmails; lo saca bien pero despues de hacer el sprintf me saca los otros valores.
A que se debe esto??
Agradecería vuestra ayuda.