我在使用string时,遇到以下问题:
我声明一个结构体,如下:
struct A
{
int id;
string name;
};
A a;
a.id = 9;
a.name = "tom";
想把该结构体内容拷贝到char* buff中,用memcpy(buff,&a,sizeof(a)),并把buff通过tcp发送到服务器,在服务器端接收到后,再拷贝回A类型的结构体中如下:
A b;
memcpy(&b,buff,sizeof(b));
在此过程中,如果a.name长度小于16,结果与期望一致,但是如果a.name的长度大于16,则出现问题,通过调试发现再把buff中的内容拷贝回b,过程中,出现内存不可读,程序崩溃。
请问各位大侠,这是什么回事?