delete指针之后应该赋值NULL
2015-09-11 15:28
369 查看
首先,C++标准规定:delete空指针是合法的,没有副作用。
但是,delete p后,只是释放了指针指向的内存空间。p并不会自动被置为NULL,而且指针还在,同时还指向了之前的地址。
问题来了,对一个非空指针delete后,若没有赋NULL,若再次delete的话,有可能出现问题。
如下代码
int *p = new int(3);
delete p;
delete p;
用VC编译运行将出现问题。
将其改为:
int *p = new int(3);
delete p;
p = NULL;
delete p;
则不会出现问题(因为delete空指针是合法的)
所以,为了避免出现问题,指针被delete之后应该赋值NULL
版权声明:本文为博主原创文章,未经博主允许不得转载。
但是,delete p后,只是释放了指针指向的内存空间。p并不会自动被置为NULL,而且指针还在,同时还指向了之前的地址。
问题来了,对一个非空指针delete后,若没有赋NULL,若再次delete的话,有可能出现问题。
如下代码
int *p = new int(3);
delete p;
delete p;
用VC编译运行将出现问题。
将其改为:
int *p = new int(3);
delete p;
p = NULL;
delete p;
则不会出现问题(因为delete空指针是合法的)
所以,为了避免出现问题,指针被delete之后应该赋值NULL
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- 开启服务和绑定服务
- 【剑指offer】十七,二叉树中和为某一值的路径
- 【MySQL】查看MySQL配置文件路径及相关配置
- JDK源码 -- Map篇
- OpenStack(Kilo版本)镜像服务glance的安装部署
- Spring详细教程
- mac上终端起动MySQL的方法
- 网络技术之——网络连接URLConnection、单/多线程下载
- 推荐几款API文档集合工具
- opencv2对于读书笔记——背投影图像的直方图来检测待处理的内容
- js无缝滚动原理及详解[转自刹那芳华]
- centos 一键安装jdk
- Cookie/Session机制详解
- 关于UICollectionViewController
- 关联引用
- 0911_Linux命令整理
- (4.3.1.13)Android FragmentPagerAdapter数据刷新notifyDataSetChanged没效果研究
- 基于CCA的图像文本交叉检索
- memcached集群部署
- 动态库与静态库的原理介绍