社区
C++ 语言
帖子详情
清除指针的问题
donysk
2005-04-01 09:19:04
一段代码
char * str = "Current connection disconnect!";
...
delete str; //here
str = NULL; //here
请问:这里清理指针的方法对吗?
delete str和str = NULL有什么区别?
...全文
190
11
打赏
收藏
清除指针的问题
一段代码 char * str = "Current connection disconnect!"; ... delete str; //here str = NULL; //here 请问:这里清理指针的方法对吗? delete str和str = NULL有什么区别?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
donysk
2005-04-01
打赏
举报
回复
非常感谢!
xjp6688
2005-04-01
打赏
举报
回复
为了安全,防止防止以后错误地引用
建议看高质量C++编程
mymyal123
2005-04-01
打赏
举报
回复
学习
pcboyxhy
2005-04-01
打赏
举报
回复
http://blog.csdn.net/crescendo/archive/2004/11/03/165886.aspx
C++98规定了
可以被 delete 操作符使用的指针只能是 来自 new的
可以被 delete[] 操作符使用的指针只能是 来自 new[]的。
简单的说就是一一配对。
程序中有几个new就有几个delete
有几个new [] 就有几个 delete[]
lemon520
2005-04-01
打赏
举报
回复
对,只有new出来的才需要delete
hxblvc
2005-04-01
打赏
举报
回复
char * str = "Current connection disconnect!";
这个str又不是new出来的,为什么要delete!!!
这个str不用显示的去删除.
xy_star
2005-04-01
打赏
举报
回复
楼上说得很清楚了
如果只是这样
char * str = "Current connection disconnect!";
...
delete str;
那以后用到str的时候,str指向的东西可能是一堆乱码。比如strcpy(str1,str),str1就不能被赋值“Current connection disconnect”
如果只是这样
char * str = "Current connection disconnect!";
...
str = null;
那以后就不能再用str这个指针。但由char * str = "Current connection disconnect!";这个语句分配在堆上的内存空间还在那里,只是以后再也找不到它了。
Salam2001
2005-04-01
打赏
举报
回复
嗯 还有就是,配对原则了:
new 配对 delete;
new [] 配对 delete[];
Salam2001
2005-04-01
打赏
举报
回复
显然不对,delete 是用在通过 new 分配的堆上的内存的,而 str 如果中途没有在另行分配heap内存的话,是指向静态存储区的指针,常量字符串本身是存储在静态存储区的。
假设,str 指向heap内存块,那么 delete str; 会释放那块内存,还给系统。
str = NULL; or str = 0; 是为了安全起见,把str指向安全的内存地址---空,以便防止以后错误地引用。
一般的顺序是:
delete str;
str = 0;
如果,颠倒了,那么你就犯了内存泄露的错误了。
junguo
2005-04-01
打赏
举报
回复
应该为delete []str;
delete代表的意义是把str所指向的内存(即存放"Current..."字符串的内存)清除掉,使它可用。
而str = Null是指使str指向一个特定的内存地址0;而不并没有释放它所指的内存空间。
清除指针用delete就好了。
pcboyxhy
2005-04-01
打赏
举报
回复
delete str; //这里必须是delete []str;
delete str和str = NULL有什么区别?
前者是释放str指向的空间的内存,并不影响str的值。
后者是将str标记为null,防止以后使用已经释放了的空间
空
指针
问题
常见场景
出现空
指针
的常见场景 参数值是 Integer 等包装类型,使用时因为自动拆箱出现了空
指针
异常; 字符串比较出现空
指针
异常; 诸如 ConcurrentHashMap 这样的容器不支持 Key 和 Value 为 null,强行 put null 的 Key 或...
【C/C++】原来这样做就能避免C语言悬垂
指针
问题
错误代码示例(悬垂
指针
)3. 原因(悬垂
指针
)4. 如何避免4.1 C语言4.2 C++4.2.1 使用new和delete4.2.2 使用智能
指针
4. 总结 1. 内存4区 程序在运行时,指令是存放在内存中的,程序大致占用了内存大概4个区: 代码...
野
指针
和悬空
指针
野
指针
: 野
指针
指向一个已删除的对象或未申请访问受限内存区域的
指针
。与空
指针
不同,野
指针
无法通过简单地判断是否为 NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野
指针
进行操作很容易造成程序错误。 ...
005_
指针
常量与常量
指针
1.格式://
指针
类型 + const +
指针
名 (const修饰的是
指针
名哦)2.本质是一个常量,但是类型是
指针
类型的,所以就是
指针
常量,这个
指针
常量只能固定的指向一个方向,后续不能再被修改指向3.
指针
指向地址的内容是...
算法——双
指针
技巧总结
双
指针
技巧可细分分为两类,一类是**快慢
指针
**,一类是**左右
指针
**。 前者解决主要解决链表中的
问题
,比如典型的判定链表中是否包含环、反转链表、找链表的中间节点、删除链表的倒数第 N 个结点;也用来解决数组...
C++ 语言
65,210
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章