动态内存分配

在C++中创建一个对象时,我们必须要为这个对象申请一块内存,而且要用构造函数对这块内存进行初始化。

C++中的new和delete相对于C的库函数malloc和free在这方面有很大的优势,所以我们主要讲的是运算符new和delete。

当用new来创建一个对象时,它会自动在堆里为对象分配内存并且为这段内存调用构造函数,这是一站式服务。

举个例子,如有一个类base,base *p = new base();在运行时这等价于先malloc(sizeof(base)),然后再为这段内存调用base的默认构造函数,另外new也为我们检查了内存分配是否成功的问题,也省去了我们在C中常常要对malloc的返回值进行检查的问题,是不是省事多了啊?

与new相对应的则是delete,delete会首先调用对象的析构函数,然后再释放对象的内存。我们最好在使用完delete后,将原先的指针赋为0,这样在不小心再次delete这个对象指针时也不会发生什么事。

对于数组,分配对象数组时,base *p = new base[10]; 而在销毁它们时,如果使用delete p;则只会释放第一个对象单元,正确的方法应该是delete []p;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值