前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++为啥要使用new

C++为啥要使用new

作者头像
hbbliyong
发布2018-03-06 11:11:19
1.4K0
发布2018-03-06 11:11:19
举报
文章被收录于专栏:hbbliyonghbbliyong

1.为什么要有new?

为什么要有new?为什么要动态创建对象?为什么有时候不用new,有时候又用new,比如:

  1. // Cocos2d-x3.x的Value类,大家都很熟悉了
  2. Value v = Value(100);
  3. // Cocos2d-x的Sprite类,也很属性了
  4. Sprite* sp = new Sprite();

为什么有些地方不用new,有些地方又要new呢?

这就涉及到自动存储和动态存储了。

2.自动存储(自动变量、局部变量)

自动存储,也叫做自动变量,比如int num = 10; 这个num就属于自动变量。

所谓自动,代表它会自动申请内存,也会自动释放内存,自动变量是保存在栈里的(后进先出)。

如果大家觉得很难理解,那么,换一个名称——局部变量。

这个好理解了吧?局部变量在离开函数,或者离开它所属的代码块之后,就会被释放。

而Value v = Value(100); 、int num = 10; 这些都是局部变量,一旦离开函数或者离开它的作用域,就会被释放。

比如把int num; 作为成员变量,那么,在这个类被释放的时候,num变量也会被释放。

这就是为什么我们在创建了这么多int、float等基本类型的变量之后,不需要去释放它们。

因为它们是自动被释放的。

3.动态存储

自动变量有很大的好处,那就是不需要我们去管内存方面的事情,但是,有时候我们不希望有这样的自动释放内存。

我们希望自己去控制什么时候释放对象,这时候就要用到new了。

我们都知道,new了之后,如果不调用相应delete的话,申请到的内存空间是永远都不会被释放的。

这就是动态存储了,我们自己来申请内存,自己来释放内存。

当然,内存泄露的罪魁祸首之一也正是new~!

因为正常人都会有疏忽的时候,并且当程序足够庞大、逻辑足够复杂的时候,有些地方调用了new,却疏忽了delete是再正常不过了。

当然,new的作用也许不仅于此,书上目前还没深入介绍,我也不多说,免得说错,毕竟C++还是需要严谨一些的~

我不敢乱吹水~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-01-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.为什么要有new?
  • 2.自动存储(自动变量、局部变量)
  • 3.动态存储
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档