Chinaunix首页 | 论坛 | 博客
  • 博客访问: 119081
  • 博文数量: 39
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 375
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-15 22:27
文章分类
文章存档

2018年(2)

2017年(37)

我的朋友

分类: C/C++

2017-09-06 22:29:21

    今天犯了一个错误,使用socket进行文件传输的时候,没有过多关注类中有指针成员,给指针成员申请了内存,并且内存赋了值,传说到服务器端,服务器一调用,就提示段错误。类似于下面:
    class test{
    public:
        int a;
        char *p;
    };
    test t1;
    char aaa[6] = {'0','1','2','3','4','5','6','7','8'};
    t1.p = (char *)malloc(10);
    memcpy(t1.p,aaa,9);
    t1.p[9] = '\0';
    socket()........
    write().....
    这样传递给服务器的t1中,p的大小是指针大小8,而不是10,p中存储的地址是客户端的地址,服务器端肯定不能动用,所以会报段错误。





    
阅读(1205) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~