delete运算符可以作用于空指针吗
2022-09-28 · 百度认证:北京惠企网络技术有限公司官方账号
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