版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上程序常见严重Bug(程序稳定性)(技术研发中心整理)1、 死循环int pos = RandomInt(qc-qacount); if(MenuItempos.size() != 0) pos = (pos+1) %(qc-qacount); while(MenuItempos.size() != 0) pos = (pos+1) %(qc-qacount);原因:while循环在特殊逻辑下无法退出。 for(int i = 0; i n; i +) . i -; .原因:循环控制变量i出现了自减,导致死循环。2、 数组越界保护 int GetVectorData(i
2、nt index) if(index = m_DataVct.size() return 0; return m_DataVctindex;原因:在没有判断(index = m_DataVct.size()的情况下,数组m_DataVctindex可能会越界访问。 for ( int i = 0; i (int)collectItemList.size(); i+ )vector npcIds = collectItemListi.npcIds;for ( size_t j = 0; j GetScene() ); 原因:npcIdsi应该是npcIdsj才对。3、 map查找越界hash_m
3、ap :const_iterator it = hashmap_PropGroups.find(groupid);if (it = hashmap_PropGroups.end()return false;const S_PROPGROUP_ITEM & propgroup = (*it).second;原因:在没有判断it = hashmap_PropGroups.end()的情况下it为结束,(*it).second访问出错。4、 公共数据号加锁 int space_index = pKernel-GetPubSpaceIndex( competeinfo_spacename.c_str(
4、) );if ( space_index FindPubRec( space_index, point_recname.c_str() ) )return false;/加锁BEGIN_LOCK_PUBSPACE(space_index);原因:在通过GetPubSpaceIndex函数调用的情况下space_index必须判断是否存在,否则导致后续操作和加锁失败。5、 公共数据加锁解锁 /加锁BEGIN_LOCK_PUBSPACE(space_index); /竞技场的出生点if ( ! pKernel-FindPubData(space_index, WaitSceneBorn) )pKe
5、rnel-AddPubData(space_index, WaitSceneBorn, VARTYPE_STRING);pKernel-SetPubDataSave(space_index, WaitSceneBorn, false); return false; /错误,没有解锁就返回了 /解锁END_LOCK_PUBSPACE( space_index );原因:在进行了公共数据加锁后必须进行解锁操作,否则导致后续加锁失败。6、 除0int m = 100/vecItems.size();原因:在进行除法运算时没有判断vecItems.size(),导致除零错误。7、 取模0 int n
6、= 100%vecItems.size() 原因:在进行取模运算时没有判断vecItems.size(),导致错误。8、 空指针判断 void SetString(char *pStr) string str = pStr;原因:没有判断pStr是否为空,在给string对象赋值时导致当机。 void SetData(const SMyData *pData) int n = pData-iValue; 原因:与上类似。9、 变量没有初始化 int width,height; . .CRect rect(width,height);原因:在Debug模式下变量都会被初始化为0,但在Releas
7、e模式下变量的初始值为随机值,容易导致程序在发布后出现诡异Bug。10、 函数递归调用 void FunctionA() if(.) FunctionB(); void FunctionB() if(.) FunctionA(); 原因:在一定条件下FunctionA和FunctionB会相互调用,无法退出,导致堆栈被耗尽而当机。 void FunctionA() if(.) FunctionA(); else return ; 原因:在递归深度超过一定限制时,导致堆栈被耗尽而当机。11、 复杂的STL操作(跨线程STL操作) vector g_DataVect;/全局资源数组 void Fu
8、nctionA() g_DataVect.reserve(100);原因:禁止在程序运行时写操作全局数据,禁止程序运行时使用复杂的STL函数。12、 内存丢失(内存乱使用) CMyClass *pObject = new CMyClass(); . if(.) return; /错误,没有释放就返回了。 . delete pObject; 原因:给对象pObject分配了内存空间,但是在返回前没有释放,导致内存丢失。 不论是客户端还是服务器都禁止在运行过程中随意的使用动态内存。13、 内存越界操作 char sStr10;.sStr11 = s;或者:strcpy(sStr,“123”);原因:sStr只有10个字节长度,但是却对11个元素进行操作,导致其他内存数据被改写。14、 浮点数等于判断 float fVal = 1.0f; . if (fVal = 1.0f) .原因:fVal = 1.0f后可能精度丢失,变为0.99999f,所以后面判断(fVal = 1.0f)不成立,导致诡异错误(随机的)。15、 静态变量使用 Void PushTemp() static NodeList tmpList; while ( 1 ) tmpList.push_front ( pNode ); . break; 原因:静态变量与全局变量类似,在多线程下会造成多个线
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2034年中国5G增值业务市场发展前景预测及投资战略咨询报告
- 2024年进口食品项目建议书
- 2024-2030年全球及中国氮化镓光电半导体器件行业需求态势及前景动态报告
- 2024-2030年全球及中国无纺布加工机行业前景动态及发展趋势预测研究报告
- 2024-2030年全球及中国可视通话系统现状动态与应用前景预测报告
- 2024-2030年全球及中国光电倍增管行业需求态势与发展潜力预测报告
- 2024-2030年全球及中国PCR薄膜和箔片行业产销状况及投资盈利预测研究报告
- 2024-2030年全球与中国非金属碎悄行业发展现状及趋势预测分析研究报告
- 2024-2030年全球与中国膜曝气生物膜反应器 (MABR)行业现状动态与投资前景预测报告
- 2024-2030年全球与中国果蔬净化机行业营销状况与竞争策略分析报告
- 信息化运维服务投标方案(技术方案)
- 中心静脉压测量技术-中华护理学会团体标准2023
- 国家电投苍梧岭脚风电场二期工程环境影响报告书
- 人力资源管理智慧树知到课后章节答案2023年下北方工业大学
- 第三次试验设计作业
- 诊所污水污物粪便处理方案及周边环境
- 新课标视域下初中语文跨学科教学初探
- 【西藏】房屋建筑工程竣工资料全套表格(word)
- 2023星闪无线短距通信技术(SparkLink1.0)产业化推进白皮书
- 医院首诉负责制实施细则
- 3.2细胞器之间的分工合作
评论
0/150
提交评论