Grace、 2020-12-22 11:48 采纳率: 50%
浏览 11

关于c 编程问题请教

typedef struct {
    int a;
    void *b;
} test_t;


void func3(void *args)
{
    test_t tt = (test_t *)args;

    printf("%d: %s\n", tt->a, (char *)tt->b);
}



int func2(void *args, size_t len)
{
    void *s;    

    if (len) {
        s = calloc(1, len);
        memcpy(s, args, len); 
    }    
    func3(s);    

    return 0;
}

int func1()
{
    test_t t;
    const char *ss = "abcddddd";
 
    t.a = 1;
    t.b = strdup(ss);
    func1((void *)&t, siztof t);
 
    return 0;
}


int main()
{
    func1();   
    exit(0);
}

这里想问以下, func3函数中tt->b 有问题吗,还是指向func1中那个申请的内存吗?

哪位大佬能够分析一下阿,有点晕。

 

  • 写回答

5条回答 默认 最新

  • 平安格勒_星 2020-12-22 13:26
    关注
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct {
        int a;
        void *b;
    } test_t;
     
     
    void func3(void *args)
    {
        test_t *tt = (test_t *)args;//我改过
    
        printf("%d: %s\n", tt->a, (char *)tt->b);
    }
     
     
     
    int func2(void *args, size_t len)
    {
        void *s;    
    
        if (len) {
            s = calloc(1, len);
            memcpy(s, args, len); 
        }    
        func3(s);    
    
        return 0;
    }
     
    int func1()
    {
        test_t t;
        const char *ss = "abcddddd";
    
        t.a = 1;
        t.b = strdup(ss);
        func2((void *)&t, sizeof(t));//我改过
    
        return 0;
    }
     
     
    int main()
    {
        func1();   
        exit(0);
    }

    虽然不知道你要干嘛或者做什么测试,只是把你的错误修改了,详见注释,有什么问题再讨论

    结果如下:

    评论

报告相同问题?

悬赏问题

  • ¥30 为什么会失败呢,该如何调整
  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析