C++ 如何判断内存地址可用?

感谢您阅读!int*a=newint;//设执行后a=0x12345678int*b=a;//那么b也=0x12345678deletea;a=NULL;//于是,a=0... 感谢您阅读!

int *a=new int;//设执行后a=0x12345678
int *b=a;//那么b也=0x12345678
delete a;
a=NULL;//于是,a=0了,b还=0x12345678

现在,b正在被一个子线程使用。这个线程需要判断b是否已经被释放。
b是一个没有唯一标识的临时变量,不能给b另外设置变量表明其释放状态。
那么,应该怎样判断内存地址b(0x12345678)是否可用呢?

PS:不知道为什么,自己写的try-catch不能捕捉到对已释放内存的读操作,而是程序直接挂掉.....

发自内心的,感激不尽呀!
展开
 我来答
cxbmbd
2019-08-20 · TA获得超过417个赞
知道答主
回答量:41
采纳率:50%
帮助的人:13.9万
展开全部
你可以试试结构化异常检查 seh try。可以拦截程序崩溃。。。但是这个方法治标不治本,而且消耗很多额外的系统资源。。。如果能有更好的方法知道内存失效,防止程序崩溃就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Lotayou
2013-05-05 · TA获得超过382个赞
知道小有建树答主
回答量:347
采纳率:0%
帮助的人:93.7万
展开全部
用最新的shared_ptr进行操作即可,share_ptr会在变量生命周期结束时自动释放内存,无须手动delete
详细用法请自行百度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2015年自然拼读
2016-04-10
知道答主
回答量:19
采纳率:0%
帮助的人:1.6万
展开全部
1.步骤类:①整体简介②所需工具/原料③方法/步骤④注意事项
2.常识类:①直接回答问题②详细给出具体原因/理由/介绍
3.原因类:①详细解释原因/理由②提供有效解决方案(构成见步骤类)
4.其他类型详见高质量标准(点击回答框右侧图片)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bgy2012pyp
2016-04-25
知道答主
回答量:5
采纳率:0%
帮助的人:5598
展开全部
hhygghjki
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hemuyan123
2016-04-18
知道答主
回答量:21
采纳率:0%
帮助的人:5万
展开全部
不知道·不知道·不知道·不知道·
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式