博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++复习(第四节)内存泄漏 、this指针
阅读量:6241 次
发布时间:2019-06-22

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

hot3.png

1.由于使用new创建的内存空间不会被系统自动释放,因此假如你不去释放它,那么该区域的内存将始终不能为其他数据所使用,而指向该内存的指针是个局部变量,当定义该指针的函数结束并返回时,指针也消失了,那么我们就再也找不到这块内存区域,同样的道理,假如指向该内存区域的指针自动消失了,计算机就再也找不到该区域的内存了,就好像丢失了这块内存一样,我们把这种情况称为内存泄漏。这种糟糕的情况一直持续到程序结束,该区域的内存才能恢复使用。

2.假如没有删除一个指针就对其进行重新赋值,如:

int *p=new in;

p=new int;

就会造成内存泄漏,这是因为,第1行定义了一个指针p并使其指向一块内存空间,第2行又将一块新的内存空间的地址赋给了p,这样第1行所开辟的那块内存空间就无法再使用了,因为指向它的指针现在已经指向了第2块空间。

3.this指针:this变量记录每个单独的对象的内存地址,而this指针则指向每个单独的对象。因此不同的对象输出的this变量的内存地址也不同。默认情况下,this指针可以省略不写,编译器会自动在成员变量i前面加上this指针,用来表示这个i成员是属于某个对象的。由于this指针保存了对象的地址,因此你可以通过该指针直接读取某个对象的数据,它的作用就将会在后面的重载运算符中得到演示,现在我们只知道this变量保存的是对象的地址,那么this指针就是指向对象的指针。另外,this指针的创建与删除是由编译器来完成的。

4.指针的常见错误:删除指针后一定要将该指针设置为空指针,这是因为删除该指针只会释放它所指向的内存空间,不会删除指针,因此这个指针还在,并且它仍然会指向原来的内存空间,这是如果你再次尝试使用该指针,那么将会导致程序出错。

05d6605b40e6f2901bb0262d0a5d38b7d54.jpg

 

转载于:https://my.oschina.net/u/3782432/blog/1840702

你可能感兴趣的文章
2017ICPC北京 J:Pangu and Stones
查看>>
Pandas 数据清洗保存
查看>>
SpringBoot + nodeJS + zookeeper 搭建微服务示例
查看>>
《互联网时代》第二集·浪潮
查看>>
8.10 exec函数
查看>>
Shell命令-文件及内容处理之sort、uniq
查看>>
Android 之文件夹排序
查看>>
Java Assert 用法简介
查看>>
关于redo size(一)
查看>>
We Know What @You #Tag: Does the Dual Role Affect Hashtag Adoption-20160520
查看>>
(转)Eclipse新增安卓虚拟机
查看>>
SpringMvc访问Controller去掉do
查看>>
PHPnow升级PHP 5.4与Mysql 5.5
查看>>
正则表达式验证邮箱格式
查看>>
如何围绕企业战略,建设BI驾驶舱?
查看>>
java多线程stop,suspend使用代码实际例子
查看>>
中小型研发团队架构实践三:微服务架构(MSA)
查看>>
Windows动态库学习心得
查看>>
在VMware虚拟机上安装Ubuntu 10.04
查看>>
LDA主题模型简介
查看>>