2013-10-03 56 views
1

我試圖讓鐺++告訴我有一個內存泄漏。我試過掃描構建,但沒有任何報道。我如何獲得llvm/clang來警告我這個問題?C++/clang分析器內存泄漏?

#include <iostream> 

int main() { 
     int *a = new int; 
     *a = 8; 
     std::cout<< a << std::endl; 
} 
+0

什麼是你的平臺? – dmitri

+0

@dmitri:linux。 – user2814152

+0

用malloc分配的內存會報告給我,但如果我使用'new',則不會。例如:'int * a =(int *)malloc(sizeof(int));' – dmitri

回答

0

假陽性修剪通常會導致刪除從main()的起源所有的泄漏,因爲該計劃將無論如何退出。嘗試分析相同的代碼,但使用不同的功能。

+0

泄漏指向新的非'main'函數的指針也不會報告給我。有[unix.Malloc檢查](http://clang-analyzer.llvm.org/available_checks.html)我找不到與'new'檢查有關的任何內容。靜態分析並不能涵蓋所有內容。使用dtrace或其他工具進行動態分析的原因存在。 – dmitri

0

因爲int是太小了,也有一些是像一個「保留的部分」的程序,以便爲小物體不需要擴展內存區域,儘量採用1024 * 1024 * 10,然後檢查結果