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就会打开该文件,定位到该行,很容易看出是哪出现了内存泄露。

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

  1. C++ 实现内存泄露检查

    内存泄漏一直是 C++ 中比较令人头大的问题, 即便是很有经验的 C++程序员有时候也难免因为疏忽而写出导致内存泄漏的代码.除了基本的申请过的内存未释放外,还存在诸如异常分支导致的内存泄漏等等.本项目 ...

  2. VC内存泄露检查工具:VisualLeakDetector

    From: http://www.xdowns.com/article/170/Article_3060.html 初识Visual Leak Detector        灵活自由是C/C++语言 ...

  3. linux c 内存泄露 检查工具

    Linux下编写C或者C++程序,有很多工具,但是主要编译器仍然是gcc和g++.最近用到STL中的List编程,为了检测写的代码是否会发现内存泄漏,了解了一下相关的知识. 所有使用动态内存分配(dy ...

  4. Linux下几款C++程序中的内存泄露检查工具

    Linux下编写C或者C++程序,有很多工具,但是主要编译器仍然是gcc和g++.最近用到STL中的List编程,为了检测写的代码是否会发现内存泄露,了解了一下相关的知识. 所有使用动态内存分配(dy ...

  5. Android C++ Native 内存泄露检查工具Raphael使用介绍

    Android C++ Native 内存泄露检查工具使用介绍 实现原理 使用方法 Raphael添加到测试apk 添加项目依赖 同步gradle 启动泄露检测功能 直接使用boardcast功能控制 ...

  6. IOS应用内存泄露问题的检测及定位

    IOS应用内存泄露问题的检测及定位 问题描述:最近新开发了一个Puzzle项目,场景内容包含35个,发现每次选择最多块数的时候会出现崩溃bug,Xcode的Bug日志也不太能看出来问题所在,直到看到& ...

  7. python 单例模式内存泄露_彻底搞懂Java内存泄露

    之前一直在简书写作,第一次发布到SF上来,也是第一次使用SF,后面会尽量同步到SF,更多文章请关注: 简书 编程之乐 转载请注明出处:谢谢! Java内存回收方式 Java判断对象是否可以回收使用的而 ...

  8. SQL Server 内存泄露(memory leak)——游标导致的内存问题

    原文:SQL Server 内存泄露(memory leak)--游标导致的内存问题 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/07/01/sql ...

  9. 什么是内存溢出与内存泄露,几种常见导致内存泄露的写法

    最近朋友推荐了一篇关于内存溢出与内存泄漏的文章,感觉写的还不错,于是便在网上搜索了一番,对这块进行了加固,发现自己之前写的代码也存在一些内存泄漏的风险,所以弄懂内存泄漏与内存溢出是很有利于我们提高代码 ...

  10. python会不会内存泄露_记一次python 内存泄漏问题及解决过程 python 嵌套读取文件 内存泄露...

    如何解决Python2的内存泄漏问题 python本身不会造成内存泄露,如果用的C/C++写的模块(包),如果处理不好,可能会造成内存泄露,但是也是C/C++的模块造成的 欢迎来到四十五资源网,pyt ...

最新文章

  1. android 应用uid,android adb 获取所有app 的uid
  2. Channel Allocation HDU1373
  3. 【HDU - 5187】zhx's contest (快速幂+ 快速乘,模板)
  4. python自学行吗-python自学行吗 有哪些用处
  5. 吴恩达神经网络和深度学习-学习笔记-20-训练/开发/测试集划分
  6. iframe加载完成后操作contentDocument
  7. 最近几天,VirtualBox虚拟机坏了多次,备份很重要
  8. Android中的App网络传输协议
  9. 计算机绘图CAD实训指导,【精品】CAD计算机绘图实习指导书
  10. 学习CPP看过的博客
  11. Java如何把文档转换成PDF
  12. 【博学谷学习记录】超强总结,用心分享丨一款钻戒网站的html、css
  13. 如何使用if嵌套结构;实现用户输入个人的身高和体重,计算出国际肥胖指标BMI值,并判断输出您属于 哪种体型
  14. JDK15已发布!网友:我还在JDK8踏步走...
  15. 免费英文文献查询网站(生物医学) (转载)
  16. grease monkey setTimeout
  17. 51单片机基础理论知识(会补充)
  18. 真心话大冒险的暴强回复
  19. 闲人闲谈PS之三十二——业务工程预算和PS成本计划
  20. 物联网卡相关的商业模式

热门文章

  1. 字段计算器python教程_ArcMap 字段计算器(Field Calculator)的使用总结
  2. meta分析学习分享
  3. 各省简称 拼音 缩写_全国所有城市拼音跟缩写.docx
  4. LinkedIn 启用俄勒冈数据中心
  5. 华为机型深色模式下问题
  6. wp文件转shp_MapGIS教程:转换shp文件的技巧
  7. 浅谈软件质量保证SQA角色和职能
  8. 楷书书法规则_书法结构|楷书10大结构原则详解之3--主笔突出原则
  9. cad无法安装_装机必备!免安装CAD迷你看图特别版PC软件
  10. TransE模型学习笔记