C语言中, 为了避免野指针,是不是可以在free和delete之后,把指针置为NULL就可以避免了?

 我来答
luxer1236e70
2012-02-14 · TA获得超过1610个赞
知道小有建树答主
回答量:270
采纳率:100%
帮助的人:127万
展开全部
我觉得你说得对,因为free/delete只是删除由程序员自己分配的内存空间,但是指针本身还是要占用内存空间的,它可以指向新的内容,比如
char *ch = new char [10];
……
delete [] ch;
之后,仍然可以打印ch和*ch,但是最后加上一行
ch = NULL;
之后,再对ch进行操作就会提示内存访问错误,"violation access…"
所以把不用的指针置为NULL是可取的。
lesey1234
2012-02-14 · TA获得超过355个赞
知道小有建树答主
回答量:421
采纳率:0%
帮助的人:358万
展开全部
不是在free 和delete 之后 应该在定义时候 把指针置为NULL
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
如狼似虎的年纪
2012-02-15 · 超过32用户采纳过TA的回答
知道答主
回答量:232
采纳率:0%
帮助的人:184万
展开全部
把指针置空确实可以有效的避免所谓“野指针”的出现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
闪闪红红星
2012-02-14 · TA获得超过924个赞
知道小有建树答主
回答量:613
采纳率:0%
帮助的人:381万
展开全部
定义的时候和调用free、delete之后都需要设成NULL
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
两只小花豹
2012-02-14 · 暂时先空着吧,还没想好要发布点什么呢!
两只小花豹
采纳数:54 获赞数:138

向TA提问 私信TA
展开全部
void func()
{
char *pCh=NULL;
pCh=new char(20);
if(NULL!=pCh)
{
memset(pCh,0,sizeof(char)*20);
}

if(NULL!=pCh)
{
free(pCh);
pCh=NULL;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式