日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c语言内存泄露检查工具,检测C++的内存泄漏用哪些工具(1)

發(fā)布時間:2023/12/9 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言内存泄露检查工具,检测C++的内存泄漏用哪些工具(1) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

OpenSSL采用C語言作為開發(fā)語言,這使得OpenSSL具有優(yōu)秀的跨平臺性能,這對于廣大技術(shù)人員來說是一件非常美妙的事情,可以在不同的平臺使用同樣熟悉的東西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平臺,這使得OpenSSL具有廣泛的適用性。不過,對于目前新成長起來的C++程序員,可能對于C語言的代碼不是很習(xí)慣,但習(xí)慣C語言總比使用C++重新寫一個跟OpenSSL相同功能的軟件包輕松不少。

OpenSSL整個軟件包大概可以分成三個主要的功能部分:密碼算法庫、SSL協(xié)議庫以及應(yīng)用程序。OpenSSL的目錄結(jié)構(gòu)自然也是圍繞這三個功能部分進(jìn)行規(guī)劃的。

作為一個基于密碼學(xué)的安全開發(fā)包,OpenSSL提供的功能相當(dāng)強(qiáng)大和全面,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協(xié)議,并提供了豐富的應(yīng)用程序供測試或其它目的使用。

Openssl版本0.9.8i

ActivePerl版本5.8.8.822 Windows/5.8/ActivePerl-5.8.8.822-MSWin32-x86-280952.msi">http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.822-MSWin32-x86-280952.msi

編譯器VS2005 提供不了下載地址了 機(jī)器上一直有,不是這次特意安裝的。

安裝VC6.0也行,反正貌似只要是c++編譯器就差不多,但是我今天安裝使用的是VS2005

安裝步驟:

1.安裝VC和ActivePerl,先后順序無所謂,安裝時注意勾選添加環(huán)境變量的選項。

2.解壓Openssl,解壓后會發(fā)現(xiàn)openssl-0.9.8i目錄下面有很多文件

其中的一個文件是INSTALL.W32用記事本或者其他文本編輯器打開,這個文件是介紹Win32平臺的安裝方法,我下面的批處理也是根據(jù)這個文件寫的,大家最好依據(jù)這文件的描述安裝,英文不好的,可以對照我的批處理來看,如果大家安裝的版本和我相同,那么直接使用下面的批處理安裝即可。

在INSTALL.W32相同目錄下新建一個批處理install.bat,內(nèi)容如下

@rem? --prefix 指定安裝目錄

perl Configure VC-WIN32 --prefix=D:/SYJ.WORK/SYJ.ENV/openssl

pause

call ms\do_ms

pause

nmake -f ms\ntdll.mak

pause

nmake -f ms\ntdll.mak test

pause

nmake -f ms\ntdll.mak install

pause

注意先不要執(zhí)行它,因為需要VC的環(huán)境變量,建議通過開始菜單-程序-Microsoft Visual Studio 2005-Visual Studio Tools-Visual Studio 2005 命令提示-進(jìn)入cmd后通過cd 進(jìn)入到openssl-0.9.8i目錄,然后在這個cmd下執(zhí)行批處理install.bat就可以了。

注意事項:

1.安裝時間比較長,請耐心等待

2.每個步驟間使用了pause暫停,便于觀察。每步完成后按任意鍵繼續(xù),注意有沒有報錯。

3.可以不通過Visual Studio 2005 命令提示進(jìn)入cmd,但是一定保證cmd下有vc的環(huán)境變量,可以手工調(diào)用vc目錄下設(shè)置環(huán)境變量的批處理vcvars32.bat,在VC的安裝目錄下可以搜索到這個文件。因為不同版本的vc這個文件所在位置不同所以我就不說明它的位置了。測試是否有vc環(huán)境最簡單的測試方法是在執(zhí)行install.bat前先在cmd下執(zhí)行下cl,沒有vc環(huán)境的話會報

'cl' 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序

4.提示%OSVERSION% is not defined 這個錯誤的時候可以忽略它沒關(guān)系

5.網(wǎng)上搜索到安裝前修改OpenSSL目錄下的MS目錄下的ntdll.mak文件,將CFLAG的/WX選項去掉,

否則cl編譯器會報.\crypto\des\enc_read.c文件的read是The POSIX name for this item is deprecated 建議使用_read。

因為我使用非常簡單的功能所以我沒有修改它,需要的朋友可以嘗試修改它。

6.最終編譯結(jié)束會在指定安裝目錄下產(chǎn)生3個子目錄分別是bin,include,lib

本文淺談一下C++內(nèi)存泄漏的檢測,首先我們需要知道程序有沒有內(nèi)存泄露,然后定位到底是哪行代碼出現(xiàn)內(nèi)存泄露了,這樣才能將其修復(fù)。

最簡單的方法當(dāng)然是借助于專業(yè)的檢測工具,比較有名如BoundsCheck工具,功能非常強(qiáng)大,相信做C++開發(fā)的人都離不開它。此外就是不使用任何工具,而是自己來實現(xiàn)對內(nèi)存泄露的監(jiān)控,分如下兩種情況:

一. 在 MFC 中檢測內(nèi)存泄漏

假如是用MFC的程序的話,很簡單。默認(rèn)的就有內(nèi)存泄露檢測的功能。

我們用VS2005生成了一個MFC的對話框的程序,發(fā)現(xiàn)他可以自動的檢測內(nèi)存泄露.不用我們做任何特殊的操作. 仔細(xì)觀察,發(fā)現(xiàn)在每個CPP文件中,都有下面的代碼:

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

DEBUG_NEW 這個宏定義在afx.h文件中,就是它幫助我們定位內(nèi)存泄漏。

在含有以上代碼的cpp文件中分配內(nèi)存后假如沒有刪除,那么停止程序的時候,VisualStudio的Output窗口就會顯示如下的信息了:

Detected memory leaks!

Dumping objects ->

d:\code\mfctest\mfctest.cpp(80) : {157} normal block at 0x003AF170, 4 bytes long.

Data: < > 00 00 00 00

Object dump complete.

在Output窗口雙擊粗體字那一行,那么IDE就會打開該文件,定位到該行,很容易看出是哪出現(xiàn)了內(nèi)存泄露。

總結(jié)

以上是生活随笔為你收集整理的c语言内存泄露检查工具,检测C++的内存泄漏用哪些工具(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。