memcpy的问题
struct A
{
int *p;
};
int _tmain(int argc, _TCHAR* argv[])
{
A a;
A b ={0};
a.p = new int(99);
if (!a.p)
{
return 0;
}
memcpy(b.p,a.p,sizeof A);//1
//memcpy(&b,&a,sizeof A);//2
cout <<b.p[0];
//cout <<b.g;
return 0;
}
为什么2不崩溃呢? b里面有指针但没有内容空间。
[解决办法]
因为2是把结构体a的内容拷贝到结构体b,拷贝的只是结构体里指针的地址,而不会拷贝指针指向的内容。所以不会崩溃。
1的话因为a里的指针是空指针,在拷贝指针指向的空间时自然出错了。
[解决办法]
不出错的原因是复制的对象不同
- C/C++ code
memcpy(b.p,a.p,sizeof A);//1