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

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

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

int *p=new in;3d

p=new int;指针

就会形成内存泄漏,这是由于,第1行定义了一个指针p并使其指向一块内存空间,第2行又将一块新的内存空间的地址赋给了p,这样第1行所开辟的那块内存空间就没法再使用了,由于指向它的指针如今已经指向了第2块空间。对象

3.this指针:this变量记录每一个单独的对象的内存地址,而this指针则指向每一个单独的对象。所以不一样的对象输出的this变量的内存地址也不一样。默认状况下,this指针能够省略不写,编译器会自动在成员变量i前面加上this指针,用来表示这个i成员是属于某个对象的。因为this指针保存了对象的地址,所以你能够经过该指针直接读取某个对象的数据,它的做用就将会在后面的重载运算符中获得演示,如今咱们只知道this变量保存的是对象的地址,那么this指针就是指向对象的指针。另外,this指针的建立与删除是由编译器来完成的。blog

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

相关文章
相关标签/搜索