编程时最应该注意的是堆上的内存的申请和释放,防止内存泄露
eg: void f()
{
int *p=new int[10];
}
理解为:在栈的内存中存放一个指向堆内存的指针P;(就是在栈的内存中存放了堆内存中10个int的内存块的首地址)
3、内存泄露问题应该注意堆和系统资源(如HANDLE,GDI,SOCKET等)。
4、区分深拷贝和浅拷贝的区别:
深拷贝是开辟新的内存空间,所有对象和变量都重新赋值,包括指针变量;浅拷贝则只是对指针变量地址的赋值,指针指向的内容没有重新开辟内存,在该方式下如果要删除该指针对象时候要特别小心,容易造成,无法寻址。
因此,标准的拷贝构造函数的定义步骤为:
a.判断是否自身赋值;
b.清除原指针指向的数据,并删除指针;(delete []ptr;//删除指针数组的内容,delete ptr;//删除指针内容;ptr=NULL;//删除指针)
c.开辟新的内存空间;
d.重新赋值;
f. 返回*this;