游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2355|回复: 2

请教一个指针与所指向对象释放后的问题

[复制链接]

4

主题

67

帖子

71

积分

注册会员

Rank: 2

积分
71
发表于 2010-3-24 21:07:00 | 显示全部楼层 |阅读模式
struct AAA
{
    AAA(){pt.x=0;pt.y=0;}
    POINT pt;
};

vector<AAA*> v_a;
AAA* temp_aaa = new AAA;

POINT* pointer = temp_aaa->pt;
v_a.push_back(temp_aaa);

delete v_a[0];
v_a.erase(v_a.begin());

if(pointer)//这里 pointer 的值貌似会是0
    ……
请问这是pointer的值是否为0
或者有没有办法判断一个指针所指向对象是否已被释放
谢谢

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2010-3-24 22:19:00 | 显示全部楼层

Re:请教一个指针与所指向对象释放后的问题

不会为0。或者说根本不用去验证这个值,因为这个指针现在指向的对象已经不存在,它这时候是个野指针。这种逻辑必须要避免。

你的问题可以转换为下面这个比较经典的错误:
int* Fun()
{
   int a;
   return &a;
}
a只是临时变量,函数调用完毕即被销毁,返回它的地址,根本没意义,只会导致错误。

而且c++不会自动处理被销毁地址内的值。即使你delete后,temp_aaa所指向的对象内容还是存在,在它被再次使用前,可以通过非常规方法访问到。

4

主题

67

帖子

71

积分

注册会员

Rank: 2

积分
71
 楼主| 发表于 2010-3-27 14:14:00 | 显示全部楼层

Re:请教一个指针与所指向对象释放后的问题

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

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-15 02:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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