发布网友 发布时间:2022-04-23 03:48
共1个回答
热心网友 时间:2023-10-13 19:41
C++中的delete和new操作符2008-01-11 17:08首先,我们先来看一下小程序:
#include <iostream>
using namespace std;
void main()
{
int *a = new int;
*a = 5;
cout << a << endl;
cout << *a << endl;
delete a ;
cout << a << endl;
cout << *a << endl;
}
我这里的运行结果为
0x273ba0
5
0x273ba0
0
请按任意键继续. . .
可以看出,他的地址没有被改变,而这个内存地址当中的具体的数据却变成0了,这就被释放了。我又知道了这里a指针变量所指向的地址并没有被改变,他指向的是被释放过后的地址,这个内存地址已经不能再被使用了。如果我把程序改成这样:
#include <iostream>
using namespace std;
void main()
{
int *a = new int;
*a = 5;
cout << a << endl;
cout << *a << endl;
delete a ;
cout << a << endl;
cout << *a << endl;
*a ++;
cout << *a << endl;
}
*a指向的内存地址中的数据还是像刚刚那样,还是0。所以如果再对被释放过后的内存地址中的数据操作,他还是不会发生一点变化。从这个小程序当中,让我知道了一个小细节:只要这个内存地址被释放过后,就要让以前指向这个内存地址的指针变量指向NULL。否则,会对程序的运行造成一定的影响。