В приведенном ниже коде, когда я печатаю f->msg
в основной функции, данные распечатываются правильно.Однако, если я передаю mystruct * f в pthread_create
и пытаюсь распечатать значение msg, я получаю ошибку сегментации во второй строке функции receive_data
.
typedef struct _mystruct{
char *msg;
} mystruct;
void *receive_data(void* vptr){
mystruct *f = (mystruct*)vptr;
printf("string is %s\n",mystruct->msg);
return NULL;
}
int main(){
mystruct *f = malloc(sizeof(mystruct));
f->msg = malloc(1000);
f->msg[0] = '\0';
strcpy(f->msg,"Hello World");
pthread_t worker;
printf("[%s]\n",f->msg);
// attr initialization is not shown
pthread_create(&worker,&attr,receive_data,&f);
}
Другой код инициализации для pthread не отображается.
Как решить эту проблему?