2010-11-11 75 views
0

我想了解如何使用泄漏工具的簡單示例。
見:在控制檯應用程序中簡單使用泄漏儀器

#include <iostream> 

int main (int argc, char * const argv[]) { 
    char *buf = new char[100]; 

    sprintf(buf, "Hello, World!\n"); 
    // insert code here... 
    std::cout << buf; 
    return 0; 
} 

上述(簡單的例子)的代碼應該泄漏上* buf中分配指針,是嗎?
與valgrind我會發現這很容易後運行
但我只是無法找到如何做到這一點在泄漏計劃
我試圖把睡眠(60),但它仍然不友好的我.. 。

感謝,
喬納森

+0

問一些。此外,你所顯示的代碼沒有泄漏。 – 2010-11-11 18:35:36

+0

他的意思是因爲他沒有釋放buf,這是一個泄漏,但是因爲程序在我不知道這個漏洞是否會被視爲泄漏,因爲這個內存將被恢復後立即終止。另外我認爲它應該是'char * buf'而不是'char buf' – robev 2010-11-11 18:46:53

+0

也許'char * buf'? – Vlad 2010-11-11 19:02:28

回答

0

我發現泄漏不會與命令行應用程序,出口迅速開展工作那麼好。我建議像你所做的那樣添加一個sleep(),但在主程序邏輯之前添加一個,並在結尾再添加一個,以便泄漏可能會對泄漏狀態進行採樣。

int main() { 
    sleep(20); // 20s may be enough 
    { 
    // do leaky operations, then local variables will go out of scope 
    } 
    sleep(20); 
} 
+0

你能給我一個簡單的應用程序的例子,泄漏的東西,你可以看到它的泄漏工具? – Jonathan 2010-11-12 18:37:32

+0

我還沒有嘗試過一段時間,但在開始和結束時有延遲時,我能夠從中得到一些有用的輸出。您也可以嘗試附加到流程中(以便在第一次睡眠期間抓住它)。此外,請嘗試在該點創建一個標記,以便從該點顯示增量。 – 2010-11-15 08:37:09

相關問題