gpt4 book ai didi

c - 通过 pthread_create 传递结构指针的问题

转载 作者:太空狗 更新时间:2023-10-29 15:59:42 25 4
gpt4 key购买 nike

在下面的代码中,当我在 main 函数中打印 f->msg 时,数据打印正确。但是,如果我在 pthread_create 中传递 mystruct *f 并尝试打印出 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 的其他初始化代码。

我该如何解决这个问题?

最佳答案

您正在传递指向 mystruct 的指针。不要那样做。

pthread_create(&worker, &attr, receive_data, f);

就够了。 f 已经是 mystruct* 类型。 &fmystruct** 类型。

关于c - 通过 pthread_create 传递结构指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6405007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com