1.在现在电脑内存很宝贵的情况下,我们如何优化程序减少内存的泄露是保护内存的关键,其中用C++编译会导致内存泄漏的原因有其一,动态指针无法被删除,成为野指针的问题,下面我们进行实验来验证。
2.先定义一个指针并指向new分配空间的数组,代码如下
#include <iostream>
using namespace std;
int main()
{int *p=new int [20];
cout<<p;
return 0;
}
3.运行后得到一个由new分配的一个随机地址0x2c414f0,再次运行又得到不同的地址0x1814f0,这里我们可以发现new为数组分配的空间为动态空间。
4.将p进行delete操作,将p打印出来,得到一个地址0x2c114f0,再次打印后又得到一个地址0x2c714f0,delete进行的操作仅仅是将new分配的空间进行释放,并不是将p删除。从而导致p成为一个野指针,造成内存泄漏。
5.如何防止内存泄漏呢,解决方法是将p进行delete操作后,让p=NULL,从而解决了内存泄漏。