今天犯了一个错误,使用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中存储的地址是客户端的地址,服务器端肯定不能动用,所以会报段错误。
阅读(1260) | 评论(0) | 转发(0) |