【C++】内存管理

 👑个人主页:啊Q闻       

🎇收录专栏:《C++》           

 🎉我自会去见我的山

💡感谢阅读,欢迎关注,点赞,收藏,评论💡

前言 

C语言的内存管理在C++中可以继续用,但是对于C++而言,又不够用,所以C++提供了新的内存管理方式,提供new和delete操作符进行动态内存管理。

 操作符new和delete

1.初始new和delete

通常使用new和delete来申请和释放单个元素的空间,使用new[ ]和delete[ ]来申请和释放连续的空间,要注意的是:二者的匹配使用。

使用如图:

初始化:

​ 


那new和delete不同于malloc和free的是哪些功能呢?

对于内置类型而言,二者在功能上没有什么区别,但是对于自定义类型成员而言,就只能用new和delete。因为使用malloc开辟空间时不会初始化,就导致后续无法对类中私有成员初始化。


 对于自定义类型:

1.单个元素

2.多个元素 

 3.多个参数

 2.探究new和delete的底层

new和delete是用户进行动态申请和释放的,,operator new 和 operator delete是系统提供的全局函数,new的底层是operator new+构造函数,delete的底层是operator delete+析构函数。

 具体是这样的:

malloc/free和new/delete的区别总结:

1.malloc和free是函数,new和delete是操作符

2.malloc申请的空间不会初始化,new可以初始化。

3.malloc申请空间时,需要手动计算空间大小,new不需要,new只需要给出类型即可,如果是多个对象,在[ ]中指定对象即可。

4.malloc的会返回对象类型是void*,使用时要进行强转,new不需要。

5.malloc申请空间失败,会返回NULL所以malloc使用时,要判空。new不需要,new需要捕获异常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值