公益事业!--debug下正确release版出错的情况大搜集! 宏,比如ASSERT(xObj->Release()==0); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般都是对内存的非法操作引起的,debug下的内存分配函数会帮你分配你所请求的更大的内存,所以即使写过头也不一定出错,release下的不同。 我的一个类成员函数调用了一个第三方SDK的API函数,该函数涉及内存操作,debug下一切正常,release异常,这个错让我一通好找,解决起来很简单,把他放到全局函数里调就好使了,也就是把这段内存放堆里就OK。 我却遇到过一些release版正确debug版出错的例子。 CMapStringToString ,debug all right ,release is crash 还有类似这样的代码(纯粹笔误)ASSERT(x=y)因为ASSERT宏只在DEBUG版中有定义!所以到了Release版中,x将不会被赋值! 线程通讯问题:BOOL endflag = true; //全局变量线程过程:threadproc(LPVOID param){..... endflag = false; AfxEndThread();}主线程:{AfxBeginThread(threadproc,NULL);.......while(endflag); //等子线程结束}在DEBUG下主线程和子线程可以正常运行到结束,在RELEASE下,主线程会死在WHILE上,没有一点时间片流给子线程。所以我在主线程中将WHILE改为:while(endflag)Sleep(0);一切都正常了 debug编译时不作优化,release要优化,我碰到N次release优化致使程序出错的情况,关掉release优化就OK greensleeve(绿袖子) :是这样等待子线程结束的啊,为什么不用waitforsingleobject 这是vc特色,vc的debug不能帮你找错。 ACTIVEX控件同时在两个js页面调用 问一个子窗口下设置按钮控件的问题 兔子两星散分 神奇的程序 一个VC程序调用delphi的dll的问题 对话框问题 关于TreeCtrl的问题 回调消息?? 拟合闭合曲线的问题 怎样在cview里加入scroll? 请问各位,小弟作了一个自动化Word的编辑器,常碰到“服务器忙”的对话框,不知是怎么回事,该如何把它搞掉呢? Reference和Pointer的区别,敬请高手光临!
内存操作,debug下一切正常,release异常,这个错让我一通好找,
解决起来很简单,把他放到全局函数里调就好使了,也就是把这段内存
放堆里就OK。
ASSERT(x=y)
因为ASSERT宏只在DEBUG版中有定义!所以到了Release版中,x将不会被赋值!
BOOL endflag = true; //全局变量
线程过程:threadproc(LPVOID param)
{
.....
endflag = false;
AfxEndThread();
}
主线程:
{
AfxBeginThread(threadproc,NULL);.......
while(endflag); //等子线程结束
}在DEBUG下主线程和子线程可以正常运行到结束,在RELEASE下,主线程会死在WHILE上,没有一点时间片流给子线程。所以我在主线程中将WHILE改为:while(endflag)Sleep(0);一切都正常了
关掉release优化就OK
是这样等待子线程结束的啊,为什么不用waitforsingleobject