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

資訊專欄INFORMATION COLUMN

C++之內(nèi)存泄漏排查

williamwen1986 / 2282人閱讀

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

一 經(jīng)驗(yàn)排查

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

二 使用Visual Leak Detector for Visual C++

2.1 Visual Leak Detector for Visual C++簡介

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

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

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

2.2 Visual Leak Detector源碼獲取編譯

2.2.1 源碼獲取,相關(guān)git地址

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

2.2.2 發(fā)布版本獲取

  • 在git主頁有Visual Leak Detector for Visual C++ Releases,只需要下載對應(yīng)的版本,進(jìn)行安裝即可。

2.2.3 進(jìn)行編譯

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

2.2.4 自帶gtest工程測試

  • 編譯項(xiàng)目自帶的vld_main進(jìn)行測試,項(xiàng)目中自帶gtest工程對相關(guān)內(nèi)存泄漏場景進(jìn)行了自測

2.3 如何測試自己的項(xiàng)目呢

2.3.1 配置工程

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


  • 設(shè)置當(dāng)前工程為Debug模式,才能顯示堆棧相關(guān)的調(diào)用信息

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 檢測結(jié)果如圖

- 程序執(zhí)行完之后會在終端顯示內(nèi)存泄漏的的個數(shù),并同時會打印相關(guān)的內(nèi)存泄漏的堆棧信息,當(dāng)鼠標(biāo)點(diǎn)擊終端信息輸出的位置時,同時會在上方代碼指示哪一行出現(xiàn)內(nèi)存泄漏。

三 使用總結(jié)

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/121944.html

相關(guān)文章

  • 內(nèi)存 問題- 收藏集 - 掘金

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

    TIGERB 評論0 收藏0
  • JS中的垃圾回收與內(nèi)存泄漏

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

    xiaolinbang 評論0 收藏0
  • VueJS SSR 后端繪制內(nèi)存泄漏的相關(guān)解決經(jīng)驗(yàn)

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

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

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

    李世贊 評論0 收藏0

發(fā)表評論

0條評論

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