亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

VisualStudio 使用Visual Leak Detector檢查內存泄漏

2020-01-26 15:03:45
字體:
來源:轉載
供稿:網友

那么在Windows下有什么好的內存泄漏檢測工具呢?微軟提供Visual Studio開發工具本身沒有什么太好的內存泄漏檢測功能,我們可以使用第三方工具Visual Leak Detector(以下簡稱vld)。

vld工具是VC++環境下一款小巧易用、免費開源的內存泄漏檢測工具,vld可以顯示導致內存泄漏的完整內存分配調用堆棧。vld的檢測報告能夠對每個內存泄漏點提供完整的堆棧跟蹤,并且包含其源文件及行號信息。

安裝過程是,先在到地址http://vld.codeplex.com/下載vld安裝文件,然后進行安裝,安裝過程中需要安裝程序會配置環境變量。我們需要記住安裝目錄。

安裝完成后打開要檢測的Visual Studio工程,我們需要在工程中配置:vld頭文件目錄和vld庫目錄。

選中游戲工程,打開菜單“項目”→ “屬性”彈出工程屬性對話框,如圖所示,選擇“配置屬性”→“VC++目錄” →“常規”,在右邊的“包含目錄”中添加C:/Program Files (x86)/Visual Leak Detector/include,其中C:/Program Files (x86)/Visual Leak Detector是我的vld安裝目錄?!皫炷夸洝敝刑砑覥:/Program Files (x86)/Visual Leak Detector/lib/Win32,注意配置目之間需要用分號分隔開。

配置完成之后點擊確定按鈕關閉對話框,然后我們需要在程序代碼中引入頭文件#include <vld.h>,但是這個頭文件在哪里引入比較好?如果是普通的一個VC++工程在哪里引入都無所謂,但是Cocos2d-x的工程就不同了,我們需要考慮跨平臺,#include <vld.h>代碼不宜添加到Classes目錄下的h或cpp文件中,這個目錄下的文件是要在其它平臺編譯運行的,而#include <vld.h>只是在Windrows平臺才有效。我們可以在Win32目錄(見圖)下的main.cpp或main.h文件引入頭文件。這些文件是與Win32平臺有關的,不同平臺移植的時候不需要。

如果在main.cpp中引入代碼如下:

#include "main.h" #include "AppDelegate.h" #include "cocos2d.h"   #include <vld.h>   USING_NS_CC;   int APIENTRY _tWinMain(HINSTANCE hInstance,             HINSTANCE hPrevInstance,             LPTSTR  lpCmdLine,             int    nCmdShow) {   UNREFERENCED_PARAMETER(hPrevInstance);   UNREFERENCED_PARAMETER(lpCmdLine);     // create the application instance   AppDelegate app;   return Application::getInstance()->run(); } 

引入之后,就測試一下了,我們來人為制造一個內存泄漏,與20.1.1一節一樣在HelloWorldScene.cpp中修改代碼:

bool HelloWorld::init() { if ( !Layer::init() ) { return false; }   __String *s = new __String();     log("%s",s->getCString());   … …   return true; } 

運行工程,需要注意的是在程序運行過程中vld是沒有堆棧輸出的,但是日志會有輸出vld的安裝信息,日志信息如下:

Visual Leak Detector Version 2.4RC2 installed.

Ready for GLSL

Ready for OpenGL 2.0

… …

從日志中可以看到vld是否安裝成功,以及安裝的版本。要想看到vld檢測報告需要退出程序后,才會在日志中輸出信息。使用Cocos2d-x會輸出很多日志信息,信息如下:

---------- Block 526166 at 0x0821FA80: 84 bytes ---------- Leak Hash: 0x780B2033, Count: 1, Total 84 bytes Call Stack (TID 4660):... ...---------- Block 526214 at 0x08224378: 8 bytes ---------- Leak Hash: 0xE1DC1852, Count: 1, Total 8 bytes Call Stack (TID 4660):... ... Data:  63 6F 63 6F  73 32 64 20  61 75 74 6F  72 65 6C 65   cocos2d. autorele  61 73 65 20  70 6F 6F 6C  00 CD CD CD  CD CD CD CD   ase.pool ........Visual Leak Detector detected 33 memory leaks (2892 bytes).Largest number used: 3204961 bytes.Total allocations: 69022415 bytes.Visual Leak Detector is now exiting.

其中一個Block表示一個內存泄漏點,在眾多Block如果能夠找到關于我們自己類的日志信息呢?我們可以查找關鍵字“helloworldscene.cpp”,這就可以定位到HelloWorld場景中的內存泄漏的Block了,我們找到如下日志信息:

---------- Block 1153 at 0x01533C70: 48 bytes ---------- Leak Hash: 0x5545A5ED, Count: 1, Total 48 bytes Call Stack (TID 2088):  f:/dd/vctools/crt_bld/self_x86/crt/src/new.cpp (57): MSVCR110D.dll!operator new  d:/helloworld/classes/helloworldscene.cpp (33): HelloWorld.exe!HelloWorld::init + 0x7 bytes  d:/helloworld/classes/helloworldscene.h (37): HelloWorld.exe!HelloWorld::create + 0xB1 bytes  d:/helloworld/classes/helloworldscene.cpp (12): HelloWorld.exe!HelloWorld::createScene + 0x5 bytes  d:/helloworld/classes/appdelegate.cpp (30): HelloWorld.exe!AppDelegate::applicationDidFinishLaunching + 0x5 bytes  d:/helloworld/cocos2d/cocos/2d/platform/win32/ccapplication.cpp (74): HelloWorld.exe!cocos2d::Application::run + 0xF bytes  d:/helloworld/proj.win32/main.cpp (19): HelloWorld.exe!wWinMain + 0xC bytes  f:/dd/vctools/crt_bld/self_x86/crt/src/crtexe.c (528): HelloWorld.exe!__tmainCRTStartup + 0x15 bytes  f:/dd/vctools/crt_bld/self_x86/crt/src/crtexe.c (377): HelloWorld.exe!wWinMainCRTStartup  0x7563850D (File and line number not available): KERNEL32.DLL!BaseThreadInitThunk + 0xE bytes  0x77B7BF39 (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x85 bytes  0x77B7BF0C (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x58 bytes Data:  1C 34 07 01  01 00 00 00  27 00 00 00  00 00 00 00   .4...... '.......  2C 34 07 01  A0 77 01 03  00 CD CD CD  CD CD CD CD   ,4...w.. ........  CD CD CD CD  CD CD CD CD  00 00 00 00  0F 00 00 00   ........ ........

從這個日志中能看到內存泄漏點,從日志的堆棧中找到我們自己編寫的類,點擊那一行打開代碼窗口,定位內存泄漏點代碼,如圖所示。

定位內存泄漏點

找到哪一個有可能有內存泄漏,解決就不是問題了。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩激情av在线播放| 国产欧美va欧美va香蕉在线| 777777777亚洲妇女| 中文字幕av一区中文字幕天堂| 亚洲码在线观看| 97视频在线观看成人| 亚洲欧美在线一区| 久久久精品影院| 国产精品极品美女粉嫩高清在线| 亚洲精品国产免费| 欧美在线视频观看| 久久久久久国产精品久久| 久久精品视频导航| 亚洲性视频网址| 欧美成人一区二区三区电影| 91国偷自产一区二区三区的观看方式| 欧美成人免费一级人片100| 日韩av在线网页| 国产欧美日韩精品丝袜高跟鞋| 国产成人精品电影久久久| 国产精品高潮呻吟久久av野狼| 色偷偷噜噜噜亚洲男人的天堂| 亚洲在线一区二区| 性视频1819p久久| 中日韩美女免费视频网站在线观看| 久久九九有精品国产23| 秋霞成人午夜鲁丝一区二区三区| 91免费看国产| 欧美成人激情图片网| 亚洲国产日韩精品在线| 97超级碰在线看视频免费在线看| 日韩美女在线播放| 日韩在线免费高清视频| 中文字幕九色91在线| 精品日韩中文字幕| 亚洲精品综合精品自拍| 另类视频在线观看| 日韩美女在线观看一区| 亚洲美女av网站| 国产精品久久久久久久久久久久久| 国产精品视频男人的天堂| 国产91对白在线播放| 国产不卡精品视男人的天堂| 亚洲人成网站免费播放| 国产精品久久久久久久久影视| 亚洲欧美变态国产另类| 午夜精品久久久久久99热| 亚洲已满18点击进入在线看片| 亚洲欧美日本伦理| 国产欧美精品一区二区三区介绍| 精品视频在线播放色网色视频| 揄拍成人国产精品视频| 国产精品精品视频一区二区三区| 性欧美xxxx视频在线观看| 欧美国产高跟鞋裸体秀xxxhd| 69久久夜色精品国产7777| 国产91成人video| 国产一区红桃视频| 亚洲欧美另类人妖| 久久精品国产久精国产一老狼| 久操成人在线视频| 欧美丝袜一区二区三区| 欧美日韩999| 91久久久久久久久久久久久| 国产欧美日韩高清| 色偷偷av亚洲男人的天堂| 国产精品久久久久久久久久尿| 人人澡人人澡人人看欧美| 日韩欧美国产一区二区| 国产一区二区三区精品久久久| 亚洲综合自拍一区| 97精品国产91久久久久久| 国产精品草莓在线免费观看| 久久久久久伊人| 国产免费成人av| 国产欧美精品在线| 有码中文亚洲精品| 91在线观看欧美日韩| 国产精品久久久久久超碰| 国产精品视频自拍| 日韩在线免费视频| 日韩欧美一区二区在线| 91超碰中文字幕久久精品| 亚洲一区二区在线播放| …久久精品99久久香蕉国产| 久久久久国产精品www| 亚洲精品日韩久久久| 国产精品99久久久久久白浆小说| 国产精品女人久久久久久| 久久精品久久久久电影| 91在线高清视频| 久久成人一区二区| 国产精品第8页| 欧美日韩国产激情| 欧美激情日韩图片| 国产欧美日韩精品丝袜高跟鞋| 97在线视频免费观看| 国产日韩亚洲欧美| 91精品国产91久久久久久不卡| 欧美日韩亚洲一区二区三区| 欧美美女15p| 国产精品www| 久久久综合免费视频| 狠狠色香婷婷久久亚洲精品| 欧美成人精品在线视频| 26uuu久久噜噜噜噜| 亚洲美女性视频| 色噜噜久久综合伊人一本| 亚洲伊人久久综合| 国产精品91在线观看| 成人有码视频在线播放| 国产精品人成电影在线观看| 亚洲精品视频在线观看视频| 亚洲精品成人久久电影| 在线观看日韩视频| 国产欧美精品一区二区三区介绍| 欧美专区中文字幕| 欧美电影免费观看高清完整| 久久男人av资源网站| 成人免费在线视频网址| 日韩一区av在线| 欧美成人免费视频| 中日韩美女免费视频网站在线观看| 欧美与欧洲交xxxx免费观看| 成人国内精品久久久久一区| 日韩欧美黄色动漫| 最近2019中文字幕mv免费看| 一区二区三区视频免费在线观看| 久久久久99精品久久久久| 日韩在线播放视频| 久久久久一本一区二区青青蜜月| 欧美精品久久久久a| 色中色综合影院手机版在线观看| 97人洗澡人人免费公开视频碰碰碰| 亚洲国产成人爱av在线播放| 日韩中文字幕在线视频播放| 日韩av在线精品| 日韩欧美在线视频观看| 久久精品99久久久久久久久| 亚洲精品一区在线观看香蕉| 成人久久久久久| 欧美电影电视剧在线观看| 国产精品永久免费| 成人性生交xxxxx网站| 欧美日韩综合视频| 亚洲精选一区二区| 国产一区二区三区免费视频| 欧美日韩国产在线| 欧美视频一区二区三区…| 亚洲国产又黄又爽女人高潮的| 亚洲精品一区二区网址| 红桃视频成人在线观看| 国产剧情日韩欧美| 国产精品久久久久久搜索| 成人网在线免费看| 黄色一区二区在线| 日韩av中文字幕在线| 亚洲自拍欧美色图| 奇门遁甲1982国语版免费观看高清| 中文字幕自拍vr一区二区三区| 欧美午夜精品久久久久久久| 97免费视频在线| 不卡av日日日| 欧美午夜电影在线|