博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象/对象指针 以及背后的堆栈
阅读量:6091 次
发布时间:2019-06-20

本文共 570 字,大约阅读时间需要 1 分钟。

hot3.png

对象:构造一个新的对象时,在栈上为其分配内存,自动调用析构函数,不需要主动调用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[]效果是一样的

 

 

转载于:https://my.oschina.net/u/2279140/blog/772317

你可能感兴趣的文章
JQuery Select控件操作汇总
查看>>
E媒体|APP必死?!——阿里百川项目总监承渊有话说
查看>>
Android 游戏之三人对战源码
查看>>
Lua与C++交互机制
查看>>
MDT2012制作模板机
查看>>
我的友情链接
查看>>
关于海量数据的数据模型
查看>>
缓存重要
查看>>
我的友情链接
查看>>
MYSQL驱动包升级到5.1.17版本之后会出现的问题
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
特殊权限-SUID,SGID,Sticky 学习笔记
查看>>
手工添加一个linux用户并能登陆
查看>>
影响网络营销成功的3大因素
查看>>
Linux负载均衡软件LVS之一(概念篇)
查看>>
微信app支付php服务端轮子
查看>>
自适应网页
查看>>
python winrm 连接windows
查看>>
十年等待,幸福人生
查看>>