望麓自卑—湖南大学最具潜力的校园传媒

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 772|回复: 6

为什么要加这样一条语句?

[复制链接]
发表于 2004-11-12 15:51:11 | 显示全部楼层 |阅读模式
小弟在借鉴一个程序时,有一事不明,原程序如下:
.
.
.class Name
{
.
.
.
protected:
  void copyName(s.pName);
  void deleteName();
  char *pName;
.
.
.
};
void Name::copyName(char *pN)
{
pName=new char[strlen(pN)+1]
.
.
.
}
void deleteName()
{[
if(pName)
{
  delete pName;
  pName=0;//为什么要加这么一句,有什么
  .                                              //意义呢?
  .
  .
}
.
.
.
发表于 2004-11-13 11:52:33 | 显示全部楼层
不知道我,不好意思。太难啦。
发表于 2004-11-13 13:31:46 | 显示全部楼层
有错吧
不需要加
发表于 2004-11-30 11:04:39 | 显示全部楼层
不用加吧
都delete了
指针指向的内存空间已经释放了
我觉得应该是程序员怕误使用这个指针会出错才给空指针赋值吧

个人见解
最好你用调试程序看一下
发表于 2004-12-9 22:13:14 | 显示全部楼层
老大 你们要看看他的上句呀 if  当然是菲零的时候 ,后来就要变成零了
发表于 2004-12-12 16:55:29 | 显示全部楼层
我试过类似的语句了
当你delete掉一个指针后
如果再访问它,比如cout,操作系统会报错
然后没有输出
如果delete后再赋值
操作系统先报错
然后输出你赋的那个值
(在linux下用gcc实验)

所以我还是认为不用再赋值
发表于 2005-4-17 10:44:12 | 显示全部楼层
应当不用加那一句吧,已经把分配空间删除了
我只是想知道你的delete pName是不是只是想把头删除了,还是要delete[]pName呢?
你的是heap区的一组字符?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

每日推荐上一条 /1 下一条

小黑屋|手机版|湖南大学望麓自卑校园传媒 ( 湘ICP备14014987号 )

GMT+8, 2025-6-4 08:44 , Processed in 0.121091 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表