如何判断一个失效的指针

xbt746 2008-11-25 07:52:54
指针有地址,但所指向的值不对。
用->操作也无法判断,请大侠指点
...全文
128 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bai_hua_lin 2008-11-26
  • 打赏
  • 举报
回复
这种不可重现的错误,确实比较头疼。你可以认真想下,到底这些线程在哪些地方在共享资源,共享的什么资源啊。如果确实是多线程引起的问题,那这个肯定是源头。多线程共享资源问题最多的就是信号量语句的放置位置,临界区语句一般出的问题相对少些。
xbt746 2008-11-26
  • 打赏
  • 举报
回复
公司贴不上代码。
我怀疑是多线程引起的问题。
因为传的值失效是有时出现,有时不出现
还没有找到重现的方法。比较郁闷
achao9527 2008-11-26
  • 打赏
  • 举报
回复
mfc中失效的指针不用处理。一般应该是自己处理.
moren123 2008-11-26
  • 打赏
  • 举报
回复
帮顶。。。。
xbt746 2008-11-26
  • 打赏
  • 举报
回复
最头疼的是,我是刚刚介入这个项目。
这个项目已经有差不多几十万行代码。
哭啊
sys0005 2008-11-25
  • 打赏
  • 举报
回复

BOOL IsBadReadPtr(
const VOID* lp,
UINT_PTR ucb
);

BOOL IsBadWritePtr(
LPVOID lp,
UINT_PTR ucb
);

BOOL IsBadStringPtr(
LPCTSTR lpsz,
UINT_PTR ucchMax
);

linger1216 2008-11-25
  • 打赏
  • 举报
回复
指针只是一个指向,并不代表对值的判断.
你可以写一个方法专门来判断这里面的值是否正确.
f(point* pVlaue)
{
...
}
wuventrun 2008-11-25
  • 打赏
  • 举报
回复
用智能指针吧
feilinhe 2008-11-25
  • 打赏
  • 举报
回复
指针指向的值不正确是你传值或赋值的问题,还是仔细检查一下代码吧
Nosky100 2008-11-25
  • 打赏
  • 举报
回复
这就是所谓的野指针。。
没啥好办法,每次释放完之后记得将指针置空就行了。
bai_hua_lin 2008-11-25
  • 打赏
  • 举报
回复
能否把问题描述清楚些,把你的程序上下文背景交代一下。指针如果不为空,那就应该是你给指针在某个地方赋值错了,或者该new的地方没有new,使指针指向了一块未知区域。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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