c++初学者的疑问

musiclee 2009-03-13 10:10:18
class Test
{
public :
int i;
//~Test(){}
};
int main()
{
Test *t=new Test;
t->i=3;
cout<<t->i<<endl;
delete t;
cout<<t->i<<endl;
return 0;
}
运行结果
3
0


问题 我delete了t 为什么还可以访问到t->i ?
...全文
69 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
musiclee 2009-03-13
  • 打赏
  • 举报
回复
谢谢 明白了
cheidtf 2009-03-13
  • 打赏
  • 举报
回复
你删除的应该是t指向的类test.
t这个指针在删除后应该
t=NULL;
之后也不能调用了.

t->i只是指向i的地址,test类对象删除的情况下可能会清零.不同的编译器可能会点不同.

delete t后,如果 t->fun();成员函数,这样一定会报错的.程序也会崩溃.
编译时对于指针潜在的BUG都无能为力,这只能是程序员要做好的.
musiclee 2009-03-13
  • 打赏
  • 举报
回复
哦 那意思说 释放掉指针后 知道指针名的话 有可能还可以使用指针?
musiclee 2009-03-13
  • 打赏
  • 举报
回复
意思说 释放掉指针 只要知道指针名 有可能还使用指针?
hhygcy 2009-03-13
  • 打赏
  • 举报
回复
这里的delete只是在对应的内存地址前面标记一下这块内存你释放了
但是不会真正释放.不过也看运行平台的.
八级程序员 2009-03-13
  • 打赏
  • 举报
回复
delete t; 什么意思? 不是删除! 而是不归你的程序管理拉~ 不说明内容就会delete 阿

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧