一个指针的问题

[复制链接]
查看11 | 回复3 | 2008-12-15 19:37:14 | 显示全部楼层 |阅读模式
但是 int *a=new int;

*a=10;

delete a;

if(a==0)//或者a==NULL

cout<<"无指向";

else

cout<<"有指向";

请问输出什么?

如果输出"无指向"(那就说明我的电脑出问题了,问题也就解决)。

但是输出有指向,那请告诉我如何更改。我的程序错误就出现就在这里,

我为这个问题忙了一下午了。脑袋都打了。请各位指点

回复

使用道具 举报

千问 | 2008-12-15 19:37:14 | 显示全部楼层
int *a=new int; *a=10; delete a; if(a==0)//或者a==NULL 在这里a不等于0也不等于NULL,a是指针名,就是一个地址,是不可能等于0或NULL的,只有指针指向的变量的内容才有可能是0或NULL,所以这个if在这里没有判断的意义.所以永远输出”有指向“。 cout<<"无指向"; else cout<<"有指向";如果你delete掉a,那么你在heap堆里开的一个int整型的内存空间就不能被访问了,于是就会出现内存泄露memory leak,而此时的指针a已被delete,其指向的地址未知,但显然不是原指向。所以a应该是有指向,只不过不知到指向哪里。...
回复

使用道具 举报

千问 | 2008-12-15 19:37:14 | 显示全部楼层
delete a; 以后, a的值不变, 但它指向的地址是无效的, 俗称野指针.所以你判断a==0是不对的.所以一般我们删除一个对象时, 要给对象指针赋值为0delete a;a=NULL;...if(a==NULL)......
回复

使用道具 举报

千问 | 2008-12-15 19:37:14 | 显示全部楼层
delete a只会回收new分配的空间, a本身不变....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行