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

delete运算符可以作用于空指针吗

发布网友 发布时间:2022-04-23 03:48

我来回答

2个回答

热心网友 时间:2022-04-27 01:17

delete会检查是不是nullptr的,所以可以作用于,但没什么作用。

指针变量其实是另一个变量,只不过它保存了当前变量的地址。变量的存在与否,并不会对指针变量造成任何影响。比如代码:

int * f = NULL; //f == NULL

f = new int; //f == f0 (0x.......)

delete f; //f == f0

最后一步delete之后,f对应的int变量会被撤销,但是这个操作并不会修改 f 的值,它不会变成NULL,而是原先它指向的int变量的地址(尽管它现在已经不存在了)。此时如果再写一个delete f;语句,它又会对刚撤销的变量的地址再作一次变量撤销操作,于是就会出问题。

扩展资料:

new/ delete 的使用(仅限于c++,注意,new、delete不是函数而是操作符!注意与c中的malloc和free区分)编程的时候经常要用到堆内存的分配,通常使用的操作符是new,这个时候就必然要用到delete去释放申请的内存空间。

此时至少要遵循以下原则:

(1)new和delete是成对出现的。只出现一个是错误的或不规范的写法,即使能编译通过,也会有安全隐患;

(2)使用的new与delete要相同。也就是说如果你在 new表达式中使用了 [],你必须在对应的 delete 表达式中使用 []。如果你在 new 表达式中没有使用 [],你也不必在对应的 delete 表达式中使用 []。

参考资料来源:百度百科-delete

热心网友 时间:2022-04-27 02:35

delete会检查是不是nullptr的,所以可以作用于,但没什么作用。

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