崩溃啊,是俺的问题还是vc的问题?

gel_ink 2008-05-24 11:51:30

程序中这句 _ASSERTE( m_nRefCount == 0);
断言报错, 进入断点调试后, 在集成环境中却发现 m_nRefCount是等于0的.
按F5继续运行, 没有问题.
但如果不在集成环境中, 不能进入调试, 则程序崩溃.

这个情况很少发生,需要不断运行程序很久,才遇到一次.

背景说明,
多线程编程,
volatile LONG m_nRefCount;
使用 InterlockedIncrement() 修改m_nRefCount

编程环境 win2k + vc2005
...全文
75 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiang_yun 2008-05-24
  • 打赏
  • 举报
回复
1、可能是_ASSERTE( m_nRefCount == 0); 有内存访问越界之类的问题
2、m_nRefCount 变量如果是多个线程都有操作,是否在其他线程里面有修改m_nRefCount的值??
cnzdgs 2008-05-24
  • 打赏
  • 举报
回复
注意一下m_nRefCount周围的变量有没有内存访问越界。
长尾巴的悟空 2008-05-24
  • 打赏
  • 举报
回复
m_nRefCount 自己设个值试试.
  • 打赏
  • 举报
回复
我觉得可以直接把它写成一个越界的情况

看出现的问题是不是跟你之前出现的一样

如果一样,就可以有一个大致的方向继续研究了
scq2099yt 2008-05-24
  • 打赏
  • 举报
回复
把这个ASSERTE改为VERFIY试试

15,466

社区成员

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

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