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

标签 c struct malloc

让我们举个例子:

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/

相关文章:

c - 使用字符数组进行动态分配

戈朗 : Preferred way to tag a struct with aribtrary data

c - 如何在 C 中创建结构体文字的数组文字?

c - C 中的内存分配和指针

使用字节数组创建 FILE 结构

c - 函数返回一些指针为 NULL

c - 将结构传递给函数

c - 它被认为是全局变量吗?结构和链表

从包装宏内调用 Malloc

c - 如何为指向结构的指针数组分配内存然后释放它?