当前位置: 首页 > news >正文

校园图书回收网站建设旅行社做网站

校园图书回收网站建设,旅行社做网站,腾讯云搭建wordpress,wordpress 3.8漏洞在用VS2005学习C调试程序的时候#xff0c;按F5键#xff0c;总提示这个问题#xff0c; 不晓得什么原因#xff0c;网上有的说找到MFC80.DLL复制到程序目录中#xff0c;也有的说复制到安装目录中#xff0c;可结果很失望#xff0c;也有的VS2005安装有问题#xff0…在用VS2005学习C调试程序的时候按F5键总提示这个问题 不晓得什么原因网上有的说找到MFC80.DLL复制到程序目录中也有的说复制到安装目录中可结果很失望也有的VS2005安装有问题系统有问题等等。最后还是用以下方法解决了 在“启动调试F5”的工具图标右侧有一栏“解决方案配置”将其中的“Debug”改为“Release” F5通过运行正常项目目录下生成“Release”文件夹Debug方式生成的“Debug文件夹是无用的。原因  DEBUG和RELEASE 版本差异及调试相关问题   I. 内存分配问题 1. 变量未初始化。下面的程序在debug中运行的很好。 thing * search(thing * something)         BOOL found;         for(int i 0; i whatever.GetSize(); i)           {           if(whatever[i]-field something-field)              { /* found it */               found TRUE;               break;              } /* found it */            }     if(found)              return whatever[i];     else              return NULL;   而在release中却不行因为debug中会自动给变量初始化foundFALSE,而在release版中则不会。所以尽可能的给变量、类或结构初始化。 2.数据溢出的问题         如char buffer[10];              int counter;        lstrcpy(buffer, abcdefghik); 在debug版中buffer的NULL覆盖了counter的高位但是除非counter16M,什么问题也没有。但是在release版中counter可能被放在寄存器中这样NULL就覆盖了buffer下面的空间可能就是函数的返回地址这将导致ACCESS ERROR。   3.DEBUG版和RELEASE版的内存分配方式是不同的。如果你在DEBUG版中申请   ele 为 6*sizeof(DWORD)24bytes,实际上分配给你的是32bytesdebug版以32bytes为单位分配而在release版分配给你的就是24bytesrelease版以8bytes为单位所以在debug版中如果你写ele[6],可能不会有什么问题而在release版中就有ACCESS VIOLATE。 II.ASSERT和VERIFY 1.ASSERT在Release版本中是不会被编译的。 ASSERT宏是这样定义的 #ifdef _DEBUG         #define ASSERT(x) if( (x) 0) report_assert_failure()         #else         #define ASSERT(x)         #endif         实际上复杂一些但无关紧要。假如你在这些语句中加了程序中必须要有的代码   比如 ASSERT(pNewObj new CMyClass); pNewObj-MyFunction(); 这种时候Release版本中的pNewObj不会分配到空间 所以执行到下一个语句的时候程序会报该程序执行了非法操作的错误。这时可以用VERIFY #ifdef _DEBUG         #define VERIFY(x) if( (x) 0) report_assert_failure()       #else #define VERIFY(x) (x)         #endif   这样的话代码在release版中就可以执行了。 III.参数问题 自定义消息的处理函数必须定义如下 afx_msg LRESULT OnMyMessage(WPARAM, LPARAM); 返回值必须是HRESULT型否则Debug会过而Release出错 IV.内存分配 保证数据创建和清除的统一性如果一个DLL提供一个能够创建数据的函数那么这个DLL同时应该提供一个函数销毁这些数据。数据的创建和清除应该在同一个层次上。 V.DLL的灾难 人们将不同版本DLL混合造成的不一致性形象的称为 “动态连接库的地狱“(DLL Hell) 甚至微软自己也这么说(http://msdn.microsoft.com/library/techart/dlldanger1.htm)。如果你的程序使用你自己的DLL时请注意 1.不能将debug和release版的DLL混合在一起使用。debug都是debug版release版都是release版。解决办法是将debug和release的程序分别放在主程序的debug和release目录下   2.千万不要以为静态连接库会解决问题那只会使情况更糟糕。 VI.RELEASE板中的调试 1.将ASSERT() 改为 VERIFY() 。找出定义在#ifdef _DEBUG中的代码如果在RELEASE版本中需要这些代码请将他们移到定义外。查找TRACE(...)中代码因为这些代码在RELEASE中也不被编译。请认真检查那些在RELEASE中需要的代码是否并没有被便宜。 2.变量的初始化所带来的不同在不同的系统或是在DEBUG/RELEASE版本间都存在这样的差异所以请对变量进行初始化。 3.是否在编译时已经有了警告?请将警告级别设置为3或4,然后保证在编译时没有警告出现. VII.将Project Settings 中 C/C 项目下优化选项改为DisbaleDebug。编译器的优化可能导致许多意想不到的错误请参考http://www.pgh.net/~newcomer/debug_release.htm 1.此外对RELEASE版本的软件也可以进行调试请做如下改动 在Project Settings 中 C/C 项目下设置 category 为 General 并且将Debug Info设置为 Program Database。在 Link项目下选中Generate Debug Info检查框。Rebuild All 如此做法会产生的一些限制无法获得在MFC DLL中的变量的值。必须对该软件所使用的所有DLL工程都进行改动。 另 MS BUGMS的一份技术文档中表明在VC5中对于DLL的Maximize Speed优化选项并未被完全支持因此这将会引起内存错误并导致程序崩溃。 2.www.sysinternals.com有一个程序DebugView用来捕捉OutputDebugString的输出运行起来后估计是自设为system debugger就可以观看所有程序的OutputDebugString的输出。此后你可以脱离VC来运行你的程序并观看调试信息。 3.有一个叫Gimpel Lint的静态代码检查工具据说比较好用。http://www.gimpel.com/ 不过要化$的。
http://www.sadfv.cn/news/333569/

相关文章:

  • 公司网站表达的内容域名查询是什么意思
  • 厅网站建设中标公告怎么向搜索引擎提交网站
  • 知名做漫画网站中国新零售网
  • 网站信息推广途径包括哪些vi设计基本要素
  • 许昌知名网站建设价格四川建设部网站官网
  • 网站改版 合同网线制作ppt
  • 久安网络微信网站建设网站建设请示
  • 网站 设计 案例 简单条友网
  • 济南网站制作创意扬中网站建设包括哪些
  • 网站空间免备案中国核工业第二二建设有限公司地址
  • 棋牌网站搭建平台江苏做网站的公司
  • 公众号微网站建设认证建站基础
  • 做贸易做个外贸网站有必要吗找人做网站要准备什么
  • 西安建设手机网站广州移动端网站建设
  • 网站模板免费下载35互联做网站好吗
  • 建企业网站 硬件怎么查百度竞价关键词价格
  • 国土系统网站建设用地受理表男人的天堂哔哩哔哩
  • 一个空间怎么放多个网站吗做电影下载网站成本
  • 做影视外包的网站男女做污视频网站
  • 苏州建设交通官方网站pw网站更换域名
  • 上海市企业服务云网站支付宝转账图片制作器
  • 网站建设常见故障网站设计网页的优缺点
  • 网页设计与网站建设程序作业网站推广最有效的方法
  • jsp网站架构jsp网站 值班
  • 网站建设招标信息网站建设学习课程
  • 诚信企业品牌网站建设wordpress滑动解锁代码
  • 企业三合一建站公司怎么找wordpress主题demo
  • 完整版网站推广方案网页打不开怎么修复
  • 开发网站开始的工作网站建设费做什么科目
  • 作弊的网站做电影网站要怎么样的主机