由於項目是用CMake進行組織,所以使用CMake的方法來進行開關的打開,首先要讓CC和CXX都變成Clang和Clang++(注意:在Clang下有時候會對inline函數報錯,需要將inline去掉)。在build文件夾中輸入多線程
CC="clang" CXX="clang++" cmake ../ -Dfsanitize=address -DCMAKE_BUILD_TYPE=Debug
當中的-Dfsanitize=adress就是打開這項內存泄露的檢查開關。而後對項目進行編譯。以後編譯出來的文件你就可以正常執行,執行程序以後。它會去調用你path下Clang目錄bin中的llvm-symbolizer進行符號讀取,一有內存泄露它就會中止報錯。而後傳給終端的信息裏面具體介紹了在內存的申請是在哪一個線程哪一個函數開始的,內存的刪除是在哪一個線程哪一個函數進行的。內存最後的讀取(即野指針的反覆濫用終於致使內存泄露)是在哪一個線程哪一個函數進行的,這對於多線程的開發天然又是如虎添翼。但願你會和我同樣喜歡這款工具。函數