![C++編程常見錯誤_技術中心_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/4c23e819-499c-4b39-b8f7-e50bf14dbcb5/4c23e819-499c-4b39-b8f7-e50bf14dbcb51.gif)
![C++編程常見錯誤_技術中心_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/4c23e819-499c-4b39-b8f7-e50bf14dbcb5/4c23e819-499c-4b39-b8f7-e50bf14dbcb52.gif)
![C++編程常見錯誤_技術中心_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/4c23e819-499c-4b39-b8f7-e50bf14dbcb5/4c23e819-499c-4b39-b8f7-e50bf14dbcb53.gif)
![C++編程常見錯誤_技術中心_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/4c23e819-499c-4b39-b8f7-e50bf14dbcb5/4c23e819-499c-4b39-b8f7-e50bf14dbcb54.gif)
![C++編程常見錯誤_技術中心_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/4c23e819-499c-4b39-b8f7-e50bf14dbcb5/4c23e819-499c-4b39-b8f7-e50bf14dbcb55.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C+編程常見錯誤技術中心-技術男背景收集了一些C+編程過程中常見的錯誤,大致分成了四種類型,與大家分享主要內容運行時錯誤邏輯錯誤累積錯誤性能差的代碼運行時錯誤運行時錯誤: 異常:很多類型的運行時錯誤可以作為異常被捕獲,但不是所有。為了保證C/C+的效率,有些錯誤是用其他的機制來通知程序:Linux系統(tǒng)下是用信號(signal)機制,Windows系統(tǒng)下是中斷。慎用:異常的拋出和捕獲,是非常耗時的操作(比普通的語句慢兩個數量級)。退出:運行時出現未被處理的錯誤, 進程將會退出規(guī)避策略:lCode Reviewl測試l面向錯誤設計l健壯的代碼下面介紹l開啟監(jiān)控進程, 自動重啟l重啟記錄寫入log
2、方便追查錯誤運行時錯誤地址越界地址越界(訪問外部內存空間):注意:下標越界下標越界,不論讀寫都會出錯的。要從邏輯上加以判斷。,不論讀寫都會出錯的。要從邏輯上加以判斷。申請的空間偏小申請的空間偏小,對所有類型的數組都可能發(fā)生,對所有類型的數組都可能發(fā)生. . 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;邏輯錯誤全局變量局部變量同名全局變量局部變量同名這是不規(guī)范的這是不規(guī)范的 這是沒有必要的這是沒有必要的這是危險的這是危險的int num=0;for(int i=0;isizeA;i+)int num=0; / 同名變量,局部優(yōu)先同名變量,局部優(yōu)先.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 應該配對出現.函數多個出口,執(zhí)行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; / 沒有執(zhí)行到沒有執(zhí)行到累積錯誤未釋放資源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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 永州2025年湖南永州市寧遠縣教育系統(tǒng)引進急需緊缺高層次專業(yè)人才筆試歷年參考題庫附帶答案詳解
- 杭州2025年浙江杭州市臨安區(qū)湍口鎮(zhèn)人民政府招聘編外聘用人員筆試歷年參考題庫附帶答案詳解
- 2025年中國導電橡膠連接器市場調查研究報告
- 2025年中國單向加熱攪拌器市場調查研究報告
- 2025年中國CO2保護焊機變壓器市場調查研究報告
- 2025至2031年中國銅管割刀行業(yè)投資前景及策略咨詢研究報告
- 2025年電磁式水表項目可行性研究報告
- 2025至2031年中國牙刷消毒器行業(yè)投資前景及策略咨詢研究報告
- 2025年板式螺釘壓接端子排項目可行性研究報告
- 2025年數字制版機項目可行性研究報告
- 美術二年級下湘教版2剪刀添畫(33張)
- 智慧車站方案提供智能化的車站管理和服務
- 路面彎沉溫度修正系數
- 寫給所有人的數學思維課
- 黑龍江省哈爾濱重點中學2023-2024學年高二上學期期中考試語文試題(含答案)
- 讀書分享讀書交流會《給教師的建議》課件
- 工程量清單及招標控制價編制、審核入庫類服務方案
- 語文教師公開課評價表
- toc測定儀的原理及使用(ppt頁)
- 委托辦理公證委托書(6篇)
- 對違反政治紀律行為的處分心得體會
評論
0/150
提交評論