c/c++解决指针对象内存释放判断问题

出于某种需求,程序往往需要将堆里申请对的对象的指针保存到某个地方以便快速查找对象。

比如,mfc的控件大多提供SetItemData(DWORD_PTR)这样一个接口用以关联控件item数据。

但由于某种需求原因,导致指标所指向的对象可能在item不知情的情况下被释放,这时保存起来的指标依然指向已被释放的原地址(而非null),这时

if(point)

{

}

是无法判断对象是否存在的。


例:

class A

{

};

A *a1 = new A;

A *a2 = a1;//a2是被保存起来的指针

//some where

delete a1;

a1 = NULL;

此时a2对于对象是否存在一无所知

if(a2)无效判断。


暂时想到的方法是在有这种需求的类里添加一个静态set

构造时加到set(或者提供静态方法来生成对象)

析构时从set删除。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值