重温堆和拷贝构造函数

堆:
C++程序的内存格局通常分为四个区:
1.全局数据区(data area)
2.代码区(code area)
3.栈区(stack area)
4.堆区(即自由存储区)(heap area)

全局变量、静态数据、常量存放在全局数据区,所有类成员函数和非成员函数代码存放在代码区,为运行函数所分配的局部变量、函数参数、返回数据、返回地址等存放在栈区,余下的空间都被作为堆区。
C++的new\delete机制比malloc()/free()更加方便。运算符new分配堆内存,如果成功,则返回只向该内存的空间,如果失败,则返回NULL。所以每次使用运算符new动态分配内存时,都应测试new的返回指针值,以防分配失败。
从堆上分配对象数组,只能调用默认的构造函数,不能调用其他任何构造函数。

使用堆空间往往由于:
1.直到运行时才能直到需要多少对象空间;
2.不知道对象的生存期到底有多长;
3.直到运行时才知道一个对象需要多少内存空间。

拷贝构造函数:
当一个对象创建时,分配了资源,这时,就需要定义自己的拷贝构造函数,使之不但拷贝成员,也拷贝资源。也就是说,如果你的类需要析构函数来析构资源,则它也需要一个拷贝构造函数。这种情况下,对对象进行的是深拷贝。
默认拷贝构造函数对对象进行的是浅拷贝。

转载于:https://www.cnblogs.com/ainima/archive/2012/10/22/6332008.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值