C++delete运算符
答案:2 悬赏:50 手机版
解决时间 2021-03-13 18:15
- 提问者网友:且恨且铭记
- 2021-03-12 18:57
C++delete运算符
最佳答案
- 五星知识达人网友:底特律间谍
- 2021-03-12 19:50
这里有两个概念你要区分清楚,变量的指针和变量本身。
指针变量其实是另一个变量,只不过它保存了当前变量的地址。当前变量的存在与否,并不会对指针变量造成任何影响。比如代码:
int * f = NULL; //f == NULL
f = new int; //f == f0 (0x.......)
delete f; //f == f0
最后一步delete之后,f对应的int变量会被撤销,但是这个操作并不会修改 f 的值,它不会变成NULL,而是原先它指向的int变量的地址(尽管它现在已经不存在了)。此时如果再写一个delete f;语句,它又会对刚撤销的变量的地址再作一次变量撤销操作,于是就会出问题了。
指针变量其实是另一个变量,只不过它保存了当前变量的地址。当前变量的存在与否,并不会对指针变量造成任何影响。比如代码:
int * f = NULL; //f == NULL
f = new int; //f == f0 (0x.......)
delete f; //f == f0
最后一步delete之后,f对应的int变量会被撤销,但是这个操作并不会修改 f 的值,它不会变成NULL,而是原先它指向的int变量的地址(尽管它现在已经不存在了)。此时如果再写一个delete f;语句,它又会对刚撤销的变量的地址再作一次变量撤销操作,于是就会出问题了。
全部回答
- 1楼网友:愁杀梦里人
- 2021-03-12 20:10
因为 delete不会把指针变为空指针,指针还指向已经被删除了的内存
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯