C++复习(第四节)内存泄漏 、this指针

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值