Salve a tutti,

ho questo semplice codice che richiama un thread che dovrebbe stampare due valori contenuti nella struct che prende come parametro, ma stampa due valori a caso. Non capisco perché.

Qualcuno saprebbe aiutarmi?

codice:
#include <unistd.h>
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>

typedef struct{
	int a;
	int b;
} int_struct;

int status;

void *test_thread(int_struct param)
{
	printf("Thread active\n");
	printf("Value a: %d\n",param.a);
	printf("Value b: %d\n",param.b);
	pthread_exit((void *)&status);
}

int main (int argc, char *argv[])
{
	int i;
	pthread_t tid;
	void *status;
	int_struct *param;
	param = malloc(sizeof(int_struct));
	param->a = 2;
	param->b = 3;

	i=pthread_create(&tid, NULL, test_thread, &param);
	if (i) {
	  printf("cannot create thread for error %d\n", i);
	  exit(-1);
	}

	pthread_join(tid, &status);

	return 0;
}
Ah, ovviamente ho provato anche il seguente codice:
codice:
void *test_thread(void *param)
{
	printf("Thread active\n");
	printf("Value a: %d\n",param->a);
	printf("Value b: %d\n",param->b);
	pthread_exit((void *)&status);
}
Ma anche con void *param, come parametro non c'è verso di farlo funzionare. Come si passano più parametri ad un thread?