c++記憶體流失檢查

來源:互聯網
上載者:User

1. vs2008如何檢查記憶體流失?

2. Linux下如何檢查c++程式記憶體流失? 

 1. vs2008如何檢查記憶體流失?

vs2008中檢查記憶體流失是比較簡單的。建立一個win32console application,包含如下的標頭檔:

#define _CRTDBG_MAP_ALLOC

#include <stdlib.h>

#include <crtdbg.h> 

 

 

通過包含#include <crtdbg.h>,將malloc和free映射成_malloc_dbg和_free_dbg,而這兩個函數負責跟蹤記憶體的申請和記憶體的釋放。測試下面的程式:

#define _CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h>#include <iostream>int main(){int* ptr = new int();_CrtDumpMemoryLeaks();return 0;

 

 

在確保在debug(和release相對)模式下,F5一下,在output視窗中可以查看到上面申請了int大小的記憶體,但是沒有釋放的記憶體流失錯誤。

更多詳細資料:http://msdn.microsoft.com/en-us/library/x98tx3cf(v=vs.80).aspx 

2. linux下如何檢查程式記憶體流失?

2.1 下載Valgrind

 

2.2 解壓

2.3 開始編譯Valgrind

 

 然後開始make,make install,完成整個編譯的工作。

2.4 測試一下。

一個簡單的記憶體流失的程式:

#include <iostream>int main(){        using namespace std;        int* p = new int();        return 0;}

編譯上面的程式, 使用Valgrind來檢測記憶體流失如下:

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.