发布网友 发布时间:2022-04-23 03:48
共2个回答
热心网友 时间:2023-07-13 13:11
这里有两个概念你要区分清楚,变量的指针和变量本身。
指针变量其实是另一个变量,只不过它保存了当前变量的地址。当前变量的存在与否,并不会对指针变量造成任何影响。比如代码:
int * f = NULL; //f == NULL
f = new int; //f == f0 (0x.......)
delete f; //f == f0
最后一步delete之后,f对应的int变量会被撤销,但是这个操作并不会修改 f 的值,它不会变成NULL,而是原先它指向的int变量的地址(尽管它现在已经不存在了)。此时如果再写一个delete f;语句,它又会对刚撤销的变量的地址再作一次变量撤销操作,于是就会出问题了。
热心网友 时间:2023-07-13 13:11
因为 delete不会把指针变为空指针,指针还指向已经被删除了的内存