精华内容
下载资源
问答
  • 有些工具如日历管理器、邮件工具以及操作系统本事经常需要数日及至数周连续运行,并需要管理动态内存的分配和回收。由于C语言通常并不使用垃圾回收器(自动确认并回收不再使用的内存块),这些C程序在使用malloc()和...
  • OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀跨平台性能,这对于广大技术人员来说是一件非常美妙事情,可以在不同平台使用同样熟悉东西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,这使得...

    OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的跨平台性能,这对于广大技术人员来说是一件非常美妙的事情,可以在不同的平台使用同样熟悉的东西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,这使得OpenSSL具有广泛的适用性。不过,对于目前新成长起来的C++程序员,可能对于C语言的代码不是很习惯,但习惯C语言总比使用C++重新写一个跟OpenSSL相同功能的软件包轻松不少。

    OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。

    作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

    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 提供不了下载地址了 机器上一直有,不是这次特意安装的。

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

    安装步骤:

    1.安装VC和ActivePerl,先后顺序无所谓,安装时注意勾选添加环境变量的选项。

    2.解压Openssl,解压后会发现openssl-0.9.8i目录下面有很多文件

    其中的一个文件是INSTALL.W32用记事本或者其他文本编辑器打开,这个文件是介绍Win32平台的安装方法,我下面的批处理也是根据这个文件写的,大家最好依据这文件的描述安装,英文不好的,可以对照我的批处理来看,如果大家安装的版本和我相同,那么直接使用下面的批处理安装即可。

    在INSTALL.W32相同目录下新建一个批处理install.bat,内容如下

    @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

    注意先不要执行它,因为需要VC的环境变量,建议通过开始菜单-程序-Microsoft Visual Studio 2005-Visual Studio Tools-Visual Studio 2005 命令提示-进入cmd后通过cd 进入到openssl-0.9.8i目录,然后在这个cmd下执行批处理install.bat就可以了。

    注意事项:

    1.安装时间比较长,请耐心等待

    2.每个步骤间使用了pause暂停,便于观察。每步完成后按任意键继续,注意有没有报错。

    3.可以不通过Visual Studio 2005 命令提示进入cmd,但是一定保证cmd下有vc的环境变量,可以手工调用vc目录下设置环境变量的批处理vcvars32.bat,在VC的安装目录下可以搜索到这个文件。因为不同版本的vc这个文件所在位置不同所以我就不说明它的位置了。测试是否有vc环境最简单的测试方法是在执行install.bat前先在cmd下执行下cl,没有vc环境的话会报

    'cl' 不是内部或外部命令,也不是可运行的程序

    4.提示%OSVERSION% is not defined 这个错误的时候可以忽略它没关系

    5.网上搜索到安装前修改OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,

    否则cl编译器会报.\crypto\des\enc_read.c文件的read是The POSIX name for this item is deprecated 建议使用_read。

    因为我使用非常简单的功能所以我没有修改它,需要的朋友可以尝试修改它。

    6.最终编译结束会在指定安装目录下产生3个子目录分别是bin,include,lib

    本文浅谈一下C++内存泄漏的检测,首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。

    最简单的方法当然是借助于专业的检测工具,比较有名如BoundsCheck工具,功能非常强大,相信做C++开发的人都离不开它。此外就是不使用任何工具,而是自己来实现对内存泄露的监控,分如下两种情况:

    一. 在 MFC 中检测内存泄漏

    假如是用MFC的程序的话,很简单。默认的就有内存泄露检测的功能。

    我们用VS2005生成了一个MFC的对话框的程序,发现他可以自动的检测内存泄露.不用我们做任何特殊的操作. 仔细观察,发现在每个CPP文件中,都有下面的代码:

    #ifdef _DEBUG

    #define new DEBUG_NEW

    #endif

    DEBUG_NEW 这个宏定义在afx.h文件中,就是它帮助我们定位内存泄漏。

    在含有以上代码的cpp文件中分配内存后假如没有删除,那么停止程序的时候,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就会打开该文件,定位到该行,很容易看出是哪出现了内存泄露。

    展开全文
  • 众所周知,内存泄露的问题比较复杂,程序正常运行时你看不出它有任何异常,但长时间运行或在特定条件下特定操作重复多次时,它才暴露出来。所以,内存泄露往往是难以发现,也难以定位解决的。 Visual Leak Detector...

    灵活自由是C语言的一大特色,但这个特色也难以避免的带来一些副作用,比如内存泄露。众所周知,内存泄露的问题比较复杂,程序正常运行时你看不出它有任何异常,但长时间运行或在特定条件下特定操作重复多次时,它才暴露出来。所以,内存泄露往往是难以发现,也难以定位解决的。

    Visual Leak DetectorVLD)是一款用于Visual C++的免费的内存泄露检测工具,用户可从http://www.codeproject.com/tools/visualleakdetector.asp下载,该软件以库形式与用户的被测工程一起使用,由于VLD是按LGPLGNU LESSER GENERAL PUBLIC LICENSE)协议对外开源,所以使用VLD是安全的,不必担心版权问题。

    VcTester是一款适合于VC代码的白盒测试工具,借助它的脚本驱动与脚本桩功能,可以方便的发起各项测试,因为内存泄露通常在特定操作下才发生,将VcTesterVLD配合使用,由VcTester模拟各种应用场景,VLD检测这些使用场合下有无内存泄露。


    使用VLD

    先从网站下载VLDzip包,当前最高版本是V1.0,解压后得到vld.hvldapi.hvld.libvldmt.libvldmtdll.libdbghelp.dll等文件,把这些所有.h头文件拷贝到VC默认的include目录下,将所有.lib文件拷贝到VC默认的lib目录下,安装工作就完成了。

    使用VLD很简单,只须在包含入口函数的CPPC文件中把vld.h头文件包含进来即可。该include语句要求放在最前面,如果当前工程定义预编译head文件(如stdafx.h),则放在“#include <stdafx.h>”语句之后就可以了。之后正常编译、按Debug方式运行被测程序,等程序运行结束时,查阅VCoutput窗口,会有“Visual Leak Detector is now exiting.”一句打印信息,在这条件信息之前,如果当前程序没有内存泄露会有“No memory leaks detected.”信息打印,但如果有内存泄露,将有类似如下信息打印:

        C:"VcTester21"sample"vc6"SampleMain.c (80): main

        crt0.c (206): mainCRTStartup

        0x7C816FD7 (File and line number not available): RegisterWaitForInputIdle

       Data:

          CD CD CD CD    CD                    ........ ........

       

    Visual Leak Detector detected 1 memory leak.

    这个信息指明当前发生内存泄露所在的函数及源文件行号,泄露内存块的地址、长度及当前内存值。用鼠标双击指示源码行的提示信息,VC即自动跳转到相应代码行,我们就很方便的知道是哪一行出错了。

    可以看出,VLD用起来很简单,对它的实现原理感兴趣的朋友可以阅读VLD源码,也可参考dofty的文章:使用Visual Leak Detector检测内存泄露


    转贴:http://www.cnblogs.com/dwjaissk/archive/2007/11/08/952927.html

    展开全文
  • 众所周知,内存泄露的问题比较复杂,程序正常运行时你看不出它有任何异常,但长时间运行或在特定条件下特定操作重复多次时,它才暴露出来。所以,内存泄露往往是难以发现,也难以定位解决的。 Visual Leak Detector...

    灵活自由是C语言的一大特色,但这个特色也难以避免的带来一些副作用,比如内存泄露。众所周知,内存泄露的问题比较复杂,程序正常运行时你看不出它有任何异常,但长时间运行或在特定条件下特定操作重复多次时,它才暴露出来。所以,内存泄露往往是难以发现,也难以定位解决的。

    Visual Leak DetectorVLD)是一款用于Visual C++的免费的内存泄露检测工具,用户可从http://www.codeproject.com/tools/visualleakdetector.asp下载,该软件以库形式与用户的被测工程一起使用,由于VLD是按LGPLGNU LESSER GENERAL PUBLIC LICENSE)协议对外开源,所以使用VLD是安全的,不必担心版权问题。

    VcTester是一款适合于VC代码的白盒测试工具,借助它的脚本驱动与脚本桩功能,可以方便的发起各项测试,因为内存泄露通常在特定操作下才发生,将VcTesterVLD配合使用,由VcTester模拟各种应用场景,VLD检测这些使用场合下有无内存泄露。


    使用VLD

    先从网站下载VLDzip包,当前最高版本是V1.0,解压后得到vld.hvldapi.hvld.libvldmt.libvldmtdll.libdbghelp.dll等文件,把这些所有.h头文件拷贝到VC默认的include目录下,将所有.lib文件拷贝到VC默认的lib目录下,安装工作就完成了。

    使用VLD很简单,只须在包含入口函数的CPPC文件中把vld.h头文件包含进来即可。该include语句要求放在最前面,如果当前工程定义预编译head文件(如stdafx.h),则放在“#include <stdafx.h>”语句之后就可以了。之后正常编译、按Debug方式运行被测程序,等程序运行结束时,查阅VCoutput窗口,会有“Visual Leak Detector is now exiting.”一句打印信息,在这条件信息之前,如果当前程序没有内存泄露会有“No memory leaks detected.”信息打印,但如果有内存泄露,将有类似如下信息打印:

        C:"VcTester21"sample"vc6"SampleMain.c (80): main

        crt0.c (206): mainCRTStartup

        0x7C816FD7 (File and line number not available): RegisterWaitForInputIdle

       Data:

          CD CD CD CD    CD                    ........ ........

       

    Visual Leak Detector detected 1 memory leak.

    这个信息指明当前发生内存泄露所在的函数及源文件行号,泄露内存块的地址、长度及当前内存值。用鼠标双击指示源码行的提示信息,VC即自动跳转到相应代码行,我们就很方便的知道是哪一行出错了。

    可以看出,VLD用起来很简单,对它的实现原理感兴趣的朋友可以阅读VLD源码,也可参考dofty的文章:使用Visual Leak Detector检测内存泄露

    展开全文
  • *vc中检测内存泄露的工具VLD(visual leak detector) 转 灵活自由是C语言的一大特色,但这个特色也难以避免的带来一些副作用,比如内存泄露。众所周知,内存泄露的问题比较复杂,程序正常运行时你看不出它有任何...

    *vc中检测内存泄露的工具VLD(visual leak detector) 转

    灵活自由是C语言的一大特色,但这个特色也难以避免的带来一些副作用,比如内存泄露。众所周知,内存泄露的问题比较复杂,程序正常运行时你看不出它有任何异常,但长时间运行或在特定条件下特定操作重复多次时,它才暴露出来。所以,内存泄露往往是难以发现,也难以定位解决的。

    Visual Leak DetectorVLD)是一款用于Visual C++的免费的内存泄露检测工具,用户可从http://www.codeproject.com/tools/visualleakdetector.asp下载,该软件以库形式与用户的被测工程一起使用,由于VLD是按LGPLGNU LESSER GENERAL PUBLIC LICENSE)协议对外开源,所以使用VLD是安全的,不必担心版权问题。

    VcTester是一款适合于VC代码的白盒测试工具,借助它的脚本驱动与脚本桩功能,可以方便的发起各项测试,因为内存泄露通常在特定操作下才发生,将VcTesterVLD配合使用,由VcTester模拟各种应用场景,VLD检测这些使用场合下有无内存泄露。


    使用VLD

    先从网站下载VLDzip包,当前最高版本是V1.0,解压后得到vld.hvldapi.hvld.libvldmt.libvldmtdll.libdbghelp.dll等文件,把这些所有.h头文件拷贝到VC默认的include目录下,将所有.lib文件拷贝到VC默认的lib目录下,安装工作就完成了。

    使用VLD很简单,只须在包含入口函数的CPPC文件中把vld.h头文件包含进来即可。该include语句要求放在最前面,如果当前工程定义预编译head文件(如stdafx.h),则放在“#include <stdafx.h>”语句之后就可以了。之后正常编译、按Debug方式运行被测程序,等程序运行结束时,查阅VCoutput窗口,会有“Visual Leak Detector is now exiting.”一句打印信息,在这条件信息之前,如果当前程序没有内存泄露会有“No memory leaks detected.”信息打印,但如果有内存泄露,将有类似如下信息打印:

        C:"VcTester21"sample"vc6"SampleMain.c (80): main

        crt0.c (206): mainCRTStartup

        0x7C816FD7 (File and line number not available): RegisterWaitForInputIdle

       Data:

          CD CD CD CD    CD                    ........ ........

       

    Visual Leak Detector detected 1 memory leak.

    这个信息指明当前发生内存泄露所在的函数及源文件行号,泄露内存块的地址、长度及当前内存值。用鼠标双击指示源码行的提示信息,VC即自动跳转到相应代码行,我们就很方便的知道是哪一行出错了。

    可以看出,VLD用起来很简单,对它的实现原理感兴趣的朋友可以阅读VLD源码,也可参考dofty的文章:使用Visual Leak Detector检测内存泄露

    展开全文
  • 有些程序并不需要管理它们动态内存的使用。当需要内存时,它们简单地通过分配来获得,从来不用担心如何释放它。这类程序包括编译器和其他一些运行一段固定(或有限)时间然后终止程序。当这种类型程序终止...
  • google 有个debug工具malloc debug,可以用于检测native内存泄露,我们都知道,分配内存方式有许多,为什么要选malloc_debug?而不是calloc_debug等呢~ 原因 在native世界,我们经常用到语言就是C语言和C++...
  • 在Linux下些C语言程序,最大问题就是没有一个好编程IDE,当然想kdevelop等工具都相当强大,但我还是习惯使用kdevelop工具,由于没有一个习惯编程IDE,内存检测也就成了在Linux下编写程序一个大问题。...
  • linux C内存泄露检测工具

    千次阅读 2014-02-22 15:11:19
    在Linux下些C语言程序,最大问题就是没有一个好编程IDE,当然想kdevelop等工具都相当强大,但我还是习惯使用kdevelop工具,由于没有一个习惯编程IDE,内存检测也就成了在Linux下编写程序一个大问题。...
  • Windows/Linux下C/C++内存泄露检测工具

    千次阅读 2017-02-17 17:51:24
    众所周知,内存泄露的问题比较复杂,程序正常运行时你看不出它有任何异常,但长时间运行或在特定条件下特定操作重复多次时,它才暴露出来。所以,内存泄露往往是难以发现,也难以定位解决的。 VisualLeak Detector...
  •  检测内存泄露  前面提到了Visual C++内置内存泄漏检测工具的工作原理。与该原理相同,因为全局变量以构造相反顺序析构,在Visual Leak Detector析构时,几乎所有其他变量都已经析构,此时如果仍然有未释放...
  • 查找内存泄露的工具 (转)

    千次阅读 2014-07-19 09:07:48
    Windows/Linux下C/C++内存泄露检测工具  一 Window下的内存泄露检测(以VC++环境为例) ...灵活自由是C语言的一大特色,但这个特色也难以避免的带来一些副作用,比如内存...众所周知,内存泄露的问题比较复杂,
  • 众所周知,内存泄露的问题比较复杂,程序正常运行时你看不出它有任何异常,但长时间运行或在特定条件下特定操作重复多次时,它才暴露出来。所以,内存泄露往往是难以发现,也难以定位解决的。 Visual Leak Detector...
  • C++ 检查内存泄露工具

    万次阅读 2021-02-23 15:08:07
    cppcheck (推荐):Cppcheck 是一种 C/C++ 代码缺陷静态检查工具。不同于 C/C++ 编译器及...MEMWATCH-由Johan Lindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gccprecessor来进行。 IE Leak Detect
  • 在linux下些C语言程序,最大问题就是没有一个好编程IDE,当然想kdevelop等工具都相当强大,但我还是习惯使用kdevelop工具,由于没有一个习惯编程IDE,内存检测也就成了在linux下编写程序一个大问题。...

空空如也

空空如也

1 2 3
收藏数 52
精华内容 20
关键字:

c语言检测内存泄露的工具

c语言 订阅