首页 热点资讯 义务教育 高等教育 出国留学 考研考公

关于C++的delete操作

发布网友 发布时间: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。否则,会对程序的运行造成一定的影响。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com