C/C++ 內存洩漏檢測工具 Valgrind Memcheck 使用經歷
背景 Linux 下的 Valgrind 是檢測內存錯誤的利器。曾因 VS2013 下運行正常的程序在 Linux g++ 編譯後崩潰,且輸出大量匯編碼無法定位
C++ 中替代 sprintf 的 std::ostringstream 輸出流詳解
簡介 std::ostringstream 是 C++ 標準庫中用於字符串格式化的流類,定義於 <sstream>。它可執行 C 風格的流輸出操作,
從 Google 開源 RE2 庫學習 C++ 測試方案
最近因科研需求,我深入研究 Google 開源的 RE2 正則表達式庫。這個龐大的 C++ 代碼庫對於習慣 Java 的我來說頗具挑戰,每天只能啃一點點。今天研
使用 Graphviz + CodeViz 產生 C/C++ 函式呼叫圖
工具簡介 Graphviz:圖形繪製後端(dot 指令)。 CodeViz:GCC patch 前端,編譯時產生 .cdepn 呼叫關係檔,Perl 腳本整理
C++ 運算式與陳述式:C++ Primer 5th 讀書筆記(二)
運算式 函式呼叫視為運算子,運算元數量不限。 左值:有身分(記憶體位址);右值:有值(內容)。C++11 引入右值參考與移動語意。 運算子優先級決定結合,但不
C++ 資料與型別:C++ Primer 5th 讀書筆記(一)
前言 重讀《C++ Primer 第5版》,記錄核心知識點。C++11 引入現代風格,簡潔優雅、高效高質。 學習觀點 想像自己是編譯器,理解語法語意。 C+
C++ 資料對齊:struct、union、enum 與 sizeof 詳解
struct 對齊規則 第一個成員偏移 0。 後續成員偏移為 max(成員大小, 當前對齊數) 的倍數(通常為成員大小)。 結構體總大小為最大成員對齊數的倍數
C++Builder 2010 集合類 Set ToInt Bug 分析
現象 Set<TTest, tt0, tt16> 定義第 15、16 位元,ToInt() 應回傳 1<<15 = 32768、1<
32 位元 C++ 程式計算 sizeof 各型別大小
關鍵規則(32 位元) 指標大小:4 bytes。 陣列 sizeof 為整個陣列位元組數(含結束符)。 結構體/類別:依成員排列與對齊規則,整體大小為最大對
C++ priority_queue 輸出最小值(min-heap)
預設行為 std::priority_queue<T> 內部為 max-heap,top() 回傳最大元素。 改為最小堆 #include <
C++ Vector 計算平均值與標準差(方差)
演算法 accumulate 求和。 平均值 = 和 / n。 用 for_each + lambda 累加平方差。 樣本標準差 = sqrt(平方差和 /
C++ RTTI:dynamic_cast 與 typeid 運行期型別識別
RTTI 組件 dynamic_cast<T>(ptr):安全向下/橫向轉型,失敗回傳 nullptr(指標)或拋出 bad_cast(參考)。需
C++ 模板友元函式解決隱式轉換與模板參數推導問題
問題 模板類別 Rational<T> 的非成員 operator* 若為模板函式,編譯器無法從 int 或 double 推導出 T,導致隱式轉換
C++ 技巧:當所有參數都需型別轉換時,優先使用非成員函數
問題情境 設計一個有理數類別 Rational,需支援與 double 的乘法運算: Rational = Rational * double Rationa
C#/C++/CLI 效能測試:Native C++ 呼叫 Native C++ DLL vs 純 C# 實作
測試架構 Native C++ EXE 呼叫 Native C++ DLL:VS2010 Win32 主控台專案,連結 EfficiencyNativeCPP