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