




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+编程常见错误技术中心-技术男背景收集了一些C+编程过程中常见的错误,大致分成了四种类型,与大家分享主要内容运行时错误逻辑错误累积错误性能差的代码运行时错误运行时错误: 异常:很多类型的运行时错误可以作为异常被捕获,但不是所有。为了保证C/C+的效率,有些错误是用其他的机制来通知程序:Linux系统下是用信号(signal)机制,Windows系统下是中断。慎用:异常的抛出和捕获,是非常耗时的操作(比普通的语句慢两个数量级)。退出:运行时出现未被处理的错误, 进程将会退出规避策略:lCode Reviewl测试l面向错误设计l健壮的代码下面介绍l开启监控进程, 自动重启l重启记录写入log
2、方便追查错误运行时错误地址越界地址越界(访问外部内存空间):注意:下标越界下标越界,不论读写都会出错的。要从逻辑上加以判断。,不论读写都会出错的。要从逻辑上加以判断。申请的空间偏小申请的空间偏小,对所有类型的数组都可能发生,对所有类型的数组都可能发生. . fprintf作为另一种字符串操作的方法也容易出现该类问题作为另一种字符串操作的方法也容易出现该类问题strncpy () snprintf() strncat()strncpy () snprintf() strncat()也只是不抛异常,但是不保证逻辑上的正确性,而且需要要也只是不抛异常,但是不保证逻辑上的正确性,而且需要要手动结束字符
3、串以确保逻辑安全。手动结束字符串以确保逻辑安全。char *pSrc=123456;int srcSize=strlen(pSrc);char *pDst=new charsrcSize; / fix: char *pDst=new charstrlen(pSrc)+1;strcpy(pDst, pSrc); / fix: strncpy(pDst, pSrc, strlen(pDst); pDststrlen(pDst)=0;int dstSize=strlen(pDst);int dstIndex=100;char pDstChar = pDstdstIndex; / fix: if(ds
4、tIndex = 0; m-)void process(uint32_t num, char *pArr)/ 倒序遍历for(uint32_t n= 0; nnum; n+)uint32_t m=num-n-1;逻辑错误全局变量局部变量同名全局变量局部变量同名这是不规范的这是不规范的 这是没有必要的这是没有必要的这是危险的这是危险的int num=0;for(int i=0;isizeA;i+)int num=0; / 同名变量,局部优先同名变量,局部优先.for(int k=0; ksizeB;k+) num+;fprintf(stdout, “num:%d.n”, num); / 0逻辑错
5、误没给输出参数初始化没给输出参数初始化void process(char *pArr, int &num) / 开头就应该给输出参数赋默认值num=0 char *pArr=NULL;while(pArr!=NULL)num+;pArr+; int num=0;process(“ABC”, num); / num=3, Okprocess(“ABC”, num); / num=6, unexpected.逻辑错误StlStl的的findfind方法得到的方法得到的iteratoriterator一定要与一定要与end()end()比较。比较。 因为因为iter=end()iter=en
6、d()时时iteriter的值是未初始化的的值是未初始化的. .mapuint32_t, vector :iterator iter = dataMap.find(10);if(iter !=dataMap.end()else iter.second-size(); / 未初始化的值逻辑错误不同类型间比较:uint32_t a=100;int32_t b=-1;if(a pLeft); PrintTrees(pNode-pRight);PrintTrees(pTreeRoot); / 数的高度为1000000必死int PrintTrees(TreeNode *pRootNod) stack
7、nodeStac; nodeStac-push(pRootNode); TreeNode *pNode=NULL; while(!nodeStack-empty() pNode=nodeStack.top(); nodeStack.pop(); print(pNode); nodeStack-push(pNode-pLeft); nodeStack-push(pNode-pRight); 累积错误未释堆空间, 内存泄露数组只释放了第一个元素只new, 不delete 建议:new/delete 应该配对出现.函数多个出口,执行delete 前退出了方法 char *pSrc=new char1
8、024;delete pSrc; / delete pSrc;void process() char *pSrc=new char1024; / 应该配对出现应该配对出现 delete pSrc;void process(bool bReturn) char *pSrc=new char1024; if(bReturn) return; delete pSrc; / 没有执行到没有执行到累积错误未释放资源FILE *rFile = NULL;char *pCurFIleName=NULL;while(true) pCurFIleName=GetCurFileName(); rFile = fo
9、pen(pFileName, rb); / 缺少fclose(fFile);性能差的代码STL的许多容器都有size() ,size()是个慢操作 特别是对于list类型,size()的时间复杂度是o(N),N是元素个数. 其他容器没有准确数据建议:判断是否为空用empty()想获得大小,最好自己计数性能差的代码map setmap set参数值传递参数值传递 注注: :这里方法是只读的,否则不只性能差,还有逻辑错误这里方法是只读的,否则不只性能差,还有逻辑错误int Sum(set dataSet) / set &dataSetuint32_totoal=0;for(set:itera
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国新式茶饮行业市场竞争格局及投资方向研究报告(智研咨询)
- 七年级下册《三元一次方程组的解法》课件与练习
- 构建平台用户个人信息保护制度
- 2025年卫星数据采集系统项目合作计划书
- 农业技术研发推广合作协议
- 装修房屋委托合同
- 餐饮业食品安全保障与事故免责协议书
- 2025年工业废气净化装置项目发展计划
- 2025年微球载体材料项目发展计划
- 医疗美容服务项目风险告知与免责协议
- 异位妊娠护理查房版本
- 人教版 八年级数学下册 第19章 单元综合测试卷(2025年春)
- 2025年湖南中医药高等专科学校高职单招职业技能测试近5年常考版参考题库含答案解析
- 2024年美发师(高级技师)职业鉴定考试题库(含答案)
- 宁波2025年浙江宁波市鄞州区卫健系统其他事业单位招聘事业编制46人笔试历年参考题库附带答案详解
- 【七上HK数学】安徽省蚌埠市固镇县2024-2025学年七年级上学期1月期末试卷数学试题
- 2025新人教版英语七年级下单词英译汉默写表(小学部分)
- 电子物料基础知识
- 外科疝气的个案护理
- 2025届江苏省南京市盐城市高三一模考试语文试题 课件
- 广西出版传媒集团有限公司招聘笔试冲刺题2025
评论
0/150
提交评论