---變量---
1、變量初期化
//誤1:局部變量使用前未初始化 int i; printf("%d/n", i); //建議:變量聲明同時初始化 int i = 0; printf("%d/n", i); //誤2:類的成員變量使用前未初始化 class A { public: A(){}; //... private: int m_iPri; }; //建議:類的非static成員變量在構造函數初始化 class A { public: A(){m_iPri = 0;} //... private: int m_iPri; };
2、變量類型
//誤1:類型溢出 cEvent cEvent; //... int iTime = 45; //分--->微秒 iTime *= 60*1000*1000; cEvent.accept(iTime); //... //建議:計算時檢查數據範圍 #include "limits" #define TIME_OUT_MAX (INT_MAX/60/1000/1000) //... iTime = iTime > TIME_OUT_MAX ? TIME_OUT_MAX : iTime; //... /********************************************************/ 誤2:不同類型之間的比較 float a = 3.14; printf("%d/n", a==3.14); // 0 //建議:轉變爲同類型進行比較,浮點類型的比較注意精度 float a = 3.14f; printf("%d/n", a == 3.14f);
---數組與容器---
1、數組
//誤1: int a[5]; a[5] = 10; //誤2: //sample1.h int a[5]; //sample1.cpp void fun1() { a[5] = 0; } //建議:使用前下標範圍檢查 //sample1.h const int cstSize = 5; int a[cstSize]; //sample1.cpp void fun1() { for (int i = 0; i < cstSize; i++) { a[i] = i; } }
2、容器
//誤1: void fun() { vector <int> vec; vec.append(0); int index = 1; int i = vec.at(index); } //建議1: void fun() { vector <int> vec; vec.append(0); int index = 1; if (index < vec.size()) // 注意 : index >= 0 { int i = vec.at(index); } } //誤2:無效的解引用 int find(const vector<int>& vec, int iThreshold) { vector<int>::const_iterator it = vec.begin(); for (; it < vec.end(); it++) { if (*it > iThreshold) { break; } } return *it; } //建議2:注意無效的iterator操作
---內存error---
//誤1: class A { public: int fun(int i){ *m_p = i; }; private: int *m_p; } //建議1: class A { public: A(){ m_p = NULL; }; public: int fun(int i) { if (m_p) { *m_p = i; } else … }; private: int *m_p; } //誤2: int *pA = new int; int *pB = pA; delete pB; pB = NULL; *pA = 10; delete pA; //建議2:誰分配由誰釋放 int *pA = new int; int *pB = pA; *pA = 10; delete pA; //誤3: int *pA = new int[10]; ... delete pA; //建議3: int *pA = new int[10]; ... delete [] pA;
DevExpress VCL是DevExpress公司旗下最老牌的用戶界面套包,所包含的控件有:數據錄入、圖表、數據分析、導航、佈局等。該控件能幫助您創建優異的用戶體驗,提供高影響力的業務解決方案,並利用您現有的VCL技能爲未來構建下一代應
實質上,ReSharper特徵可用於C#,VB.net,XML,Asp.net,XAML,和構建腳本。 使用ReSharper,你可以進行深度代碼分析,智能代碼協助,實時錯誤代碼高亮顯示,解決方案範圍內代碼分析,快速代碼更正,一步完成代碼格
作者:太業 流式處理語言發展 早期流式處理概念: 20 世紀 70 年代,編程語言如 APL 提供了對數組的流式操作,這可以看作是流式處理語法的早期形式。 管道(Pipes)概念在 UNIX 系統中的引進使得可以通過命令行將一個命令的
Qt 是目前最先進、最完整的跨平臺C++開發工具。它不僅完全實現了一次編寫,所有平臺無差別運行,更提供了幾乎所有開發過程中需要用到的工具。如今,Qt已被運用於超過70個行業、數千家企業,支持數百萬設備及應用。 本文將爲大家演示如何使用QRh
JetBrains IDEs日前正式發佈了v2024.1版本,此版本中最大的亮點就是帶來了AI賦能的全行代碼補全,同時在最新的IDEs中重做了終端、擁有更強大的代碼編輯和導航功能、更智能的代碼分析和提示、更優化的性能、更豐富的插件和集成等。
本文分享自華爲雲社區《【華爲雲MySQL技術專欄】MySQL內存增長問題分析案例》,作者:GaussDB 數據庫。 前言 在現網環境中,偶爾會遇到客戶實例內存OOM(Out Of Memory,即內存耗盡或溢出)的情況。MySQL數據庫
本文分享自華爲雲社區《10分鐘搞懂各種內存溢出案例!!(含完整源碼,建議收藏)》,作者:冰 河。 作爲程序員,多多少少都會遇到一些內存溢出的場景,如果你還沒遇到,說明你工作的年限可能比較短,或者你根本就是個假程序員!哈哈,開個玩笑。今天,我
文|苟振東(花名:盛知) Koupleless 項目 committer 螞蟻集團技術專家 本文 5789 字 閱讀 12 分鐘 本篇文章屬於 Koupleless 進階系列文章第二篇,默認讀者對 Koupleless 的基礎概念、能力都
1. 引言 在現代軟件開發過程中,性能優化和故障排查是保證應用穩定運行的關鍵任務之一。Java作爲一種廣泛使用的編程語言,其生態中湧現出了許多優秀的監控和診斷工具,諸如:SkyWalking、Zipkin等,它們幫助開發者和運維人員
· 前言 · 在國內,公網服務器與本地服務器的通信一直是個難題,本地服務器因爲IP是動態變化的,公網服務器沒辦法將請求發送給本地服務器。爲了解決這個問題,所以採用WebSocket協議替換Http協議。爲了實現請求等待,使用Gu
在這裏分享一下通過拖取 DataCube 代碼審計後發現的一些漏洞,包括前臺的文件上傳,信息泄露出賬號密碼,後臺的文件上傳。當然還有部分 SQL 注入漏洞,因爲 DataCube 採用的是 SQLite 的數據庫,所以SQL 注入相對來說顯
pt-osc原理探索及其觸發器的深入分析 > 作者:莫善,某互聯網公司高級 DBA。 > > 愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 > > 本文約 6000 字,預計閱讀需要 20 分鐘。 背景 自工
本文分享自華爲雲社區《一文徹底喫透MyBatis源碼!!》,作者:冰 河。 寫在前面 隨着互聯網的發展,越來越多的公司摒棄了Hibernate,而選擇擁抱了MyBatis。而且,很多大廠在面試的時候喜歡問MyBatis底層的原理和源碼實現