读书人

memcpy的有关问题

发布时间: 2012-03-17 19:06:28 作者: rapoo

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 

读书人网 >VC/MFC

热点推荐