1.什么是内存拷贝?
内存拷贝即进行内存的拷贝,也就是平时C++中所说的深拷贝,将值和值所在的空间地址一起进行拷贝,更具体的是某个类中含有成员为指针的变量时,同时用一个初始化的类对象给另外一个类对象赋值时,需要进行深拷贝动作
2.为什么需要进行内存拷贝?
当一个类中含有指针成员变量时,用一个初始化的类对象给另外一个未初始化的类对象赋值时,由于未初始化过的类对象中开辟了自己的一片内存空间,当初始化的类对象给该对象赋值时,将自己的内存空间地址同时也赋给了原来未初始化的类对象,此时改变了原类对象的指针指向,即指向的是初始化过的类对象中开辟的同一片空间,在两个类对象生命周期结束以后,释放时,会将原类对象改变指向以后,所指的内存空间释放两次,造成段错误,同时原来类对象自己的内存空间也造成了泄露
3.怎样处理内存拷贝过程中遇到的问题?
在赋值运算符函数定义中,另外开辟一块内存空间,将初始化过后的类对象中的指针成员变量拷贝到该地址空间中,同时释放掉原对象所指向的内存空间即可