文档章节

对象/对象指针 以及背后的堆栈

j
 jcwc
发布于 2016/10/23 22:54
字数 368
阅读 17
收藏 0

对象:构造一个新的对象时,在栈上为其分配内存,自动调用析构函数,不需要主动调用delete函数。

对象指针:new一个对象指针时,首先在堆上创建一个对象,再将对象资源的首地址赋值给对象指针。其内存需要调用delete显式释放,调用delete函数时,会将其在堆上的资源全部释放,但对象指针仍然指向那块内存,所以需要将对象指针赋值为空。

 

 

总结:堆上的资源需要主动delete,所以若在构造函数中使用了new来初始化了类的某个对象指针成员,析构函数中需要记得调用delete函数释放其资源。

程序里面的static变量 常量 malloc分配的内存  对象指针所指向的内存,都在堆上。堆内存在函数退出时,不会被释放,其地址是可以作为函数的返回值的。

 

 

 

delete和delete[]的区别:

类对象(c++中string是一个类):

A *a = new A[10]

//delete a;//释放a指向的全部内存,调用a[0]对象的析构函数。

delete[]  a;//释放a指向的全部内存,调用a[0]~a[9]的全部析构函数。

内置的数据类型:

如int  double等,他们不是类,没有析构函数,所以delete和delete[]效果是一样的

 

 

© 著作权归作者所有

上一篇: cabac熵编码算法
下一篇: 编解码概念
j
粉丝 0
博文 38
码字总数 14339
作品 0
私信 提问
JAVA存储数据

JAVA存储数据主要有六个地方 1.寄存器,register,最快的存储区,但是由编译器来分配,不可以直接控制. 2.堆栈,stack,位于通用RAM(随机访问存储器),堆栈指针向上,释放内存,堆栈指针向下,分配内存...

勤奋的蚂蚁
2018/02/24
0
0
JavaScript 的共享传递和按值传递

关于JavaScript如何将值传递给函数,在互联网上有很多误解和争论。大致认为,参数为原始数据类时使用按值传递,参数为数组、对象和函数等数据类型使用引用传递。 按值传递 和 引用传递参数 ...

前端小智
04/27
0
0
程序运行时保存到什么地方(JAVA)

程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。有六个地方都可以保存数据: (1) 寄存器。这是最快的保存区域,因为它位于和其他所有保存方式不同的地方...

chapin
2013/03/12
0
0
JavaScript 是如何工作的:JavaScript 的共享传递和按值传递

摘要: 原始数据类型和引用数据类型的副本作为参数传递给函数。 原文:JavaScript 是如何工作的:JavaScript 的共享传递和按值传递 作者:前端小智 Fundebug经授权转载,版权归原作者所有。 ...

Fundebug
04/18
0
0
引用回收时机

由下面一段代码引发的思考: 上文中打重点符号的这句话如果在for循环的外部试想会有什么后果? 直接现象就是,每回存储用的都是一个对象,后一个对象的属性如果为空值,那么前一个的属性就覆...

KongFanhao
2016/12/05
6
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins基础入门-5-用户和权限管理

本篇,我们来介绍下Jenkins上如何创建用户,以及如何管理用户,和那些用户可以有ProjectA的权限。这个很好理解,一个项目,有开发和测试,和运维,每个团队都有不同的角色,例如有测试经理和...

shzwork
6分钟前
0
0
linux上解压版安装jdk,tomcat

需要的安装包 1.vmware12 2.centos7版本 3.安装完成后需要xshell来连接远程虚拟机,虚拟机保证要联网,网络畅通。 4.xftp用来向linux传输文件用,一般来说xshell和xftp配套使用 5.对应的压缩...

architect刘源源
42分钟前
24
0
使用 spring 的 IOC 解决程序耦合

工厂模式解耦 在实际开发中我们可以把三层的对象都使用配置文件配置起来,当启动服务器应用加载的时候,让一个类中的方法通过读取配置文件,把这些对象创建出来并存起来。在接下来的使用的时...

骚年锦时
今天
2
0
group by分组后获得每组中时间最大的那条记录

用途: GROUP BY 语句用于 对一个或多个列对结果集进行分组。 例子: 原表: 现在,我们希望根据USER_ID 字段进行分组,那么,可使用 GROUP BY 语句。 我们使用下列 SQL 语句: SELECT ID,US...

豆花饭烧土豆
今天
3
0
android6.0源码分析之Camera API2.0下的Preview(预览)流程分析

本文将基于android6.0的源码,对Camera API2.0下Camera的preview的流程进行分析。在文章android6.0源码分析之Camera API2.0下的初始化流程分析中,已经对Camera2内置应用的Open即初始化流程进...

天王盖地虎626
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部