程序退出时总是中断在atlsimpstr.h的void Release() throw()函数处?

mingt 2007-07-25 11:00:44
void Release() throw()
{
ATLASSERT( nRefs != 0 );//中断在这里

if( _AtlInterlockedDecrement( &nRefs ) <= 0 )
{
pStringMgr->Free( this );
}
}

有人知道原因吗?
找遍了代码,没找到原因
...全文
1354 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wolf_sccc 2012-04-07
  • 打赏
  • 举报
回复
一般来说都是内存操作越界导致,注意检查响应部分内存操作
smpowy 2011-03-22
  • 打赏
  • 举报
回复
这个 有人 解决了吗?
我也遇到了。
我现在是 窗口初始化出来后 点 退出 就会报。
其他的 什么都不做。也会这样
atmel89cs52 2010-04-23
  • 打赏
  • 举报
回复
我也遇到过,情况如下(希望对出现同样问题的网友有所帮助)
定义了如下两个结构体
struct struct1
{
char a;
char b[20];
};

struct struct2
{
char c[22];
}

struct1 struct1_a={0};
struct2 struct2_b={0};

然后使用
memcpy(&struct1_a.b,&struct2_b.c,sizeof(struct2_b.c));
就出现这种错误了(因为struct2_b.c空间大于struct1_a.b)
我出现这种低级错误的原因是后面修改程序不完全........

sanhao123456 2009-11-20
  • 打赏
  • 举报
回复
我也遇到过,出错的地方在memset或者数组越界
比如:byte barr[10];
memset(barr, 0, 11); //这里就有问题,估计会把barr外的内存也清0了
再比如:byte barr[10];
barr[10] = 11; //越界了

另外
byte * barr = new byte[10]; 比 byte barr[10]; 好一些
用 byte * barr = new byte[10];
记得 delete barr; barr = NULL;

我就是这么解决的...没再报错过。。
yy175703252 2008-09-10
  • 打赏
  • 举报
回复
我也遇到这个问题了~要怎么办呀~急死了~有谁教教我~~~~
awshome 2008-07-28
  • 打赏
  • 举报
回复
我也遇到这样的问题了.你是怎么解决的啊?
mingt 2007-07-27
  • 打赏
  • 举报
回复
郁闷,还没有找到原因
DentistryDoctor 2007-07-26
  • 打赏
  • 举报
回复
CString内存的数据被破坏?
yjgx007 2007-07-25
  • 打赏
  • 举报
回复
引用计数破坏,非法再次调用Release()
看下是不是线程异常退出时,修改了引用计数.

15,469

社区成员

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

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