社区
进程/线程/DLL
帖子详情
程序退出时总是中断在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
打赏
收藏
程序退出时总是中断在atlsimpstr.h的void Release() throw()函数处?
void Release() throw() { ATLASSERT( nRefs != 0 );//中断在这里 if( _AtlInterlockedDecrement( &nRefs ) Free( this ); } } 有人知道原因吗? 找遍了代码,没找到原因
复制链接
扫一扫
分享
转发到动态
举报
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()
看下是不是线程异常退出时,修改了引用计数.
atl
simpstr
.h 的
Release
()报错
函数
原型
void
Release
()
throw
() {
ATL
ASSERT( nRefs != 0 ); if( _
Atl
InterlockedDecrement( &nRefs ) <= 0 ) { pStringMgr->Free( this ); } } 一个结构体 typedef struct tagMeasureData //测试数据 { ... C
关于使用CString 出现的问题
1、CString是一个很好用的结构体。我也是因为偶然的原因,用到了。当然遇见了很多的问题,还有一些精髓需要领悟。一些比较好的blog: 讲解CString的一些机制 http://blog.csdn.net/shupan001/article/details/6437783 CString一个好
处
是,比如我想连接两个字符串,char* 类型的话必须自己编程实现或者用
函数
strcat。但
C++
函数
后面加
throw
关键字的含义
1、对
throw
的说明 C++
函数
后面后加关键字
throw
(something)限制,是对这个
函数
的异常安全性作出限制。 举例及解释如下:
void
fun()
throw
() 表示fun不允许抛出任何异常,即fun是异常安全的。
void
fun()
throw
(...) 表示fun可以抛出任何形式的异常。
void
fun()
throw
(exceptionType) 表示fun
C++
函数
后面的
throw
()
它是
函数
提供者和使用者的一种君子协定,标明该
函数
不抛出任何异常。 之所以说是君子协定,是因为实际上内部实现是需要人肉确保。 如果一个标明
throw
()的
函数
内部发生了
throw
: 1,如果内部直接
throw
something,编译器会发现并指出; 2. 如果是内部调用了一个可能
throw
something的
函数
,编译器无法发现,运行
时
一旦这个内部的
函数
throw
,
程序
会abort。
java
函数
throw
_java为什么有些异常
throw
出去需要在
函数
头用
throw
s声明,一些就不用。...
Excepiton分两类:checked exception、runtime exception;直接继承自Exception就是checked exception,继承自RuntimeException就是runtime的exception。你可以简单地理解checked exception就是要强制你去
处
理这个异常(不管你
throw
s多少层,你终归要在某个地方catch它);而runtime ...
进程/线程/DLL
15,469
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章