国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

C++之內存泄漏排查

williamwen1986 / 2297人閱讀

摘要:二使用簡介提供了內置的內存泄漏檢測,但它的功能充其量只是最小的。可定制的內存泄漏報告可以保存到文件或發送到調試器,并且可以包含可變級別的詳細信息。是目前唯一可免費使用的內存泄漏檢測器,它將上述所有專業級功能整齊地打包在一個易于使用的庫中。

一 經驗排查

  • 有經驗的程序員會對程序中申請內存的地方進行排查,例如malloc或者new關鍵字的地方進行跟蹤,一種情況是我們按照程序邏輯進行了申請和釋放,要提防程序在發生異常時沒有如我們所期望的那樣進行內存釋放,此時也應當防止內存泄漏。

二 使用Visual Leak Detector for Visual C++

2.1 Visual Leak Detector for Visual C++簡介

  • Visual C++ 提供了內置的內存泄漏檢測,但它的功能充其量只是最小的。此內存泄漏檢測器是作為 Visual C++ 提供的內置內存泄漏檢測器的免費替代品而創建的。以下是 Visual Leak Detector 的一些功能,內置檢測器中不存在這些功能:

  • 為每個泄漏塊提供完整的堆棧跟蹤,包括可用的源文件和行號信息。
    檢測大多數(如果不是全部)進程內內存泄漏類型,包括基于 COM 的泄漏和基于純 Win32 堆的泄漏。

  • 選定的模塊(DLL 甚至主 EXE)可以從泄漏檢測中排除。
    提供泄漏塊的完整數據轉儲(以十六進制和 ASCII 格式)。
    可定制的內存泄漏報告:可以保存到文件或發送到調試器,并且可以包含可變級別的詳細信息。
    其他用于 Visual C++ 的售后泄漏檢測器已經可用。但大多數真正流行的,如 Purify 和 BoundsChecker,都非常昂貴。存在一些免費的替代方案,但它們通常太具有侵入性、限制性或不可靠。 Visual Leak Detector 是目前唯一可免費使用的 Visual C++ 內存泄漏檢測器,它將上述所有專業級功能整齊地打包在一個易于使用的庫中。

2.2 Visual Leak Detector源碼獲取編譯

2.2.1 源碼獲取,相關git地址

   git clone  https://github.com/oneiric/vld

2.2.2 發布版本獲取

  • 在git主頁有Visual Leak Detector for Visual C++ Releases,只需要下載對應的版本,進行安裝即可。

2.2.3 進行編譯

  • 本代碼要求的vs版本為2019,博主使用的版本為為2015,在編譯時候會報錯
 項目-->屬性--->常規-->平臺工具集--->選擇 Visual Studio 2015(v140)確定,就OK

2.2.4 自帶gtest工程測試

  • 編譯項目自帶的vld_main進行測試,項目中自帶gtest工程對相關內存泄漏場景進行了自測

2.3 如何測試自己的項目呢

2.3.1 配置工程

  • 在自己的工程中引入vld.h文件,并在鏈接庫中配置vld.lib庫


  • 設置當前工程為Debug模式,才能顯示堆棧相關的調用信息

2.3.2 編寫簡單的測試用例

  • three.h

      #pragma once  class three  {  public:      three();      ~three();  };
  • three.cpp

     #include "three.h" three::three() { } three::~three() { }
  • main.cpp

      #include  #include  #include   #include   #include "three.h"  using namespace std;  int main()  {      cout << "vld test begin" << endl;      int *one = new int[30];      char *two = new char[40];      three * tmp = new three();      return 0;  }

    2.3.3 檢測結果如圖

- 程序執行完之后會在終端顯示內存泄漏的的個數,并同時會打印相關的內存泄漏的堆棧信息,當鼠標點擊終端信息輸出的位置時,同時會在上方代碼指示哪一行出現內存泄漏。

三 使用總結

  • 總的來說,該工具的使用還是非常便捷的,相比較于自己去按個去排查,會省很多精力,尤其是面對代碼量特別大的工程的時候,排查內存泄漏是一件特別讓人糟心的事情,希望本次分享對大家有所幫助,如果感興趣的話,可以點贊加關注,謝謝!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/121944.html

相關文章

  • 內存 問題- 收藏集 - 掘金

    摘要:然而,中依然有可能發生內存泄漏。所以你的安卓快速定位解決內存泄漏掘金昨天是個好日子,程序員的節日,在這里給所有的程序員送上一份遲到的祝福。應用內存泄漏的定位分析與解決策略掘金,大家好,我是。 Android 性能優化之巧用軟引用與弱引用優化內存使用 - Android - 掘金前言: 從事Android開發的同學都知道移動設備的內存使用是非常敏感的話題,今天我們來看下如何使用軟引用與弱...

    TIGERB 評論0 收藏0
  • JS中的垃圾回收與內存泄漏

    摘要:介紹瀏覽器的具有自動垃圾回收機制,也就是說,執行環境會負責管理代碼執行過程中使用的內存。中的內存泄漏問題程序的內存溢出后,會使某一段函數體永遠失效取決于當時的代碼運行到哪一個函數,通常表現為程序突然卡死或程序出現異常。 showImg(https://segmentfault.com/img/remote/1460000018932880?w=4400&h=3080); 1. 介紹 瀏...

    xiaolinbang 評論0 收藏0
  • VueJS SSR 后端繪制內存泄漏的相關解決經驗

    摘要:積少成多,最后造成內存泄漏。前端內存泄漏的影響,都是發生在客戶機器上,而且基本上現代瀏覽器也會做好保護機制,一般自行刷新之后都會解決。但是,一旦后端繪制內存泄漏造成宕機之后,整個服務器都會受影響,危險性更大,搞不好年終獎就沒了。 引言 Memory Leak 是最難排查調試的 Bug 種類之一,因為內存泄漏是個 undecidable problem,只有開發者才能明確一塊內存是不是需...

    lifesimple 評論0 收藏0
  • 內存泄露從入門到精通三部曲排查方法篇

    摘要:對比操作前后的來定位內存泄露的根因所在。手機管家內存泄露每日監控方案目前手機管家的內存泄露每日監控會自動運行并輸出是否存在疑似泄露的報告郵件,不論泄露對象的大小。 騰訊Bugly特約作者: 姚潮生 最原始的內存泄露測試 重復多次操作關鍵的可疑的路徑,從內存監控工具中觀察內存曲線,是否存在不斷上升的趨勢且不會在程序返回時明顯回落。這種方式可以發現最基本,也是最明顯的內存泄露問題,對用戶價...

    李世贊 評論0 收藏0

發表評論

0條評論

williamwen1986

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<