C语言中,结构体是一篇连续的内存空间,使用=赋值操作,底层用到的就是memcpy;如果结构体中有指针变量;操作后。两个指针指向的同一块区域,而不会分配新的区域;
struct S
{
int a;
char * b;
};
int main(){
S s1;
s1.b = new char[5];
memcpy(s1.b,"hell",5);
S s2;
s2 = s1;
printf("s1.b:%s ,%d \n s2.b:%s,%d\n" ,s1.b,int(s1.b),s2.b,int(s2.b));
return 0;
}
output://复制后的地址空间相同
s1.b:hell ,4921176
s2.b:hell,4921176