gpt4 book ai didi

c - 如何将 malloced 变量传递给结构到 C 中新创建的结构

转载 作者:行者123 更新时间:2023-12-05 01:25:29 25 4
gpt4 key购买 nike

让我们举个例子:

struct args{
char *fname;
}

int main(void){
struct args tArg;
tArg.fname = malloc(10);
strcpy(tArg.fname, "ciao");
pthread_create(&p1, NULL, thread, (void *)&tArg);
pthread_join(p1, NULL);
free(tArg.fname);
return 0;
}

void *thread(void *p1Arguments){
struct args *p1 = p1Arguments;
printf("%s\n", p1->fname);
}

thread 中的 printf 导致程序出现段错误,因为 p1->fname 中没有任何内容。
我该怎么做才能传递 malloc'ed 字符串?

编辑:很抱歉我忘了写pthread_join

最佳答案

看起来像:

1) 您在 struct tArg 中正确分配和初始化“fname”

2) 你也正确地将 tArg 传递到你的线程中

...但是...

3) 你的主程序在线程访问它之前取消分配“fname”(糟糕!)

建议:

在您创建线程之后放置一个“getchar()”(之前您调用“free()”),这样 main 将在释放之前等待用户点击“ENTER”在它退出之前。

关于c - 如何将 malloced 变量传递给结构到 C 中新创建的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15620934/

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