指动态申请的内存空间没有正常释放,也不能够继续使用的情况。
最常见的就是new后没有正常的使用delete来释放,导致内存泄漏。
1 指针悬挂
指针指向一个已经释放的地址空间。
两个指针指向同一个内存空间,在delete的时候该空间会释放两次,出现运行错误。
在浅拷贝的时候经常出现。
2 野指针
指向释放的或者访问受限内存的指针。
-指针变量没有被初始化(值不定,可以初始化为NULL)
-指针被free或者delete后,没有置为NULL。free和delete只是把指针指向的内存给释放掉,并没有消除指针本身,此时指针指向的是垃圾内存(内存中随机的位置),释放后的指针应该被置为NULL。
-指针操作超越了变量的作用范围,比如返回指向栈内存的指针就是野指针。
3 内存泄漏的危害
内存泄漏的堆积会导致系统的所有内存被消耗,严重影响使用。