#include <stdio.h>
#include <string.h>
#include <openssl/bio.h>
#include <openssl/crypto.h> static BIO *bio_err = NULL; void mem_debug_start()
{
bio_err = BIO_new(BIO_s_file());
if (!bio_err) {
printf("mem_debug_start bio_err ERRPR!\n");
return;
} BIO_set_fp(bio_err, stderr, BIO_NOCLOSE | BIO_FP_TEXT);
CRYPTO_malloc_debug_init();
CRYPTO_set_mem_debug_options(V_CRYPTO_MDEBUG_ALL);
CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
} void mem_debug_stop()
{
if (bio_err) {
CRYPTO_mem_leaks(bio_err);
BIO_free(bio_err);
}
} int main(void)
{
char *p = NULL, *num = ""; mem_debug_start(); p = OPENSSL_malloc(); memmove(p, num, strlen(num)); printf("%s\n", p); // OPENSSL_free(p);
// p = NULL; mem_debug_stop(); return ;
} 编译:gcc mem_debug.c -I . -I ~/openssl/soft/include -lssl -lcrypto -L ~/openssl/soft/lib -ldl

  运行后会出现错误提示:

[::]      file=mem_debug.c, line=, thread=, number=, address=09DA3150

  因为p没有释放所有存在内存泄漏。在ssl编程一书中的第五章内存分配对此进行了讲解。

  openssl中提供了一些强大的内存管理函数,可以方便的检查内存泄漏点,可以看出一次对内存的申请造成了多大的内存泄漏,是哪个文件,哪句造成的。

查找openssl内存泄漏(代码)的更多相关文章

  1. 使用Chrome+node-inspector查找NodeJS内存泄漏

    关键字:NodeJS, 内存泄漏,node-inspector,Chrome OS:Windows 10 本文介绍如何使用node-inspector+Chrome查找nodejs内存泄漏. 1.创建 ...

  2. 【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码

    1.首先,java程序启动在linux,怎么生成dump文件? 1>第一步,首先你需要得到java程序的PID,最简单的方法使用如下命令 ps -ef|grep java 或者如果是docker ...

  3. Java内存泄漏分析与解决方案

    Java内存泄漏是每个Java程序员都会遇到的问题,程序在本地运行一切正常,可是布署到远端就会出现内存无限制的增长,最后系统瘫痪,那么如何最快最好的检测程序的稳定性,防止系统崩盘,作者用自已的亲身经历 ...

  4. 调不尽的内存泄漏,用不完的Valgrind

    调不尽的内存泄漏,用不完的Valgrind Valgrind 安装 1. 到www.valgrind.org下载最新版valgrind-X.X.X.tar.bz2 2. 解压安装包:tar –jxvf ...

  5. Linux/Unix使用valgrind内存泄漏检测

    c\c++程序设计.内存管理是一个比较头疼的问题.相信它会导致内存泄漏.除了外部养成良好的编程习惯(使用智能指针),使用该工具还可以帮助检测内存泄漏,valgrind这是Unix\Linux在一个很好 ...

  6. 【转】如何使用MAT分析内存泄漏

    原文链接:http://www.lightskystreet.com/2015/09/01/mat_usage/ MAT - Memory Analyzer Tool 使用进阶 Sep 1, 2015 ...

  7. 什么是内存泄漏?(What is a memory leak?)

    程序中的内存泄漏是怎么回事呢? 我们写过很多带有关键词free()的程序.比如我在这篇博文关于链表的一些重要操作(Important operations on a Linked List)中删除整个 ...

  8. 如何在linux下检测内存泄漏

    之前的文章应用 Valgrind 发现 Linux 程序的内存问题中介绍了利用Linux系统工具valgrind检测内存泄露的简单用法,本文实现了一个检测内存泄露的工具,包括了原理说明以及实现细节. ...

  9. 重载new和delete来检测内存泄漏

    重载new和delete来检测内存泄漏 1. 简述 内存泄漏属于资源泄漏的一种,百度百科将内存泄漏分为四种:常发性内存泄漏.偶发性内存泄漏.一次性内存泄漏和隐式内存泄漏.    常发性指:内存泄漏的代 ...

随机推荐

  1. @Autowired和@Resourse关键字的区别

    这个问题是平时我们面试时面试官非常喜欢问的一个问题.首先,@Resourse是javax.annother包提供的一个注解关键字,是Java EE的方法,但Spring也支持该注解的导入,而@Auto ...

  2. python编程:从入门到实践----基础知识>第4章练习

    4-1 比萨 :想出至少三种你喜欢的比萨,将其名称存储在一个列表中,再使用for 循环将每种比萨的名称都打印出来. a.修改这个for 循环,使其打印包含比萨名称的句子,而不仅仅是比萨的名称.对于每种 ...

  3. [Scoi2014]方伯伯的OJ(动态开点splay)

    开始没看数据范围差点以为是这题了:https://www.cnblogs.com/hfctf0210/p/10911340.html 然后看到n<=1e8,怎么这么大? 所以这题需要用动态开点线 ...

  4. php 接口中常用的aes加密

    <?php /** * Aes 对称加密 */ class Aes { public $key; public function __construct($key){ $this->key ...

  5. Apache Commons Lang之日期时间工具类

    码农不识Apache,码尽一生也枉然. FastDateFormat FastDateFormat是一个快速且线程安全的时间操作类,它完全可以替代SimpleDateFromat.因为是线程安全的,所 ...

  6. SVN一直清理解决

    svn作为我们经常使用的版本管理服务器,在使用过程中经常需要通过clean up操作来完成本地文件与服务器文件信息及版本信息同步,然而有时会在执行清理命令时提示“清理失败,请执行清理”,并且提示的中文 ...

  7. unless|until|LABEL|{}|last|next|redo| || |//|i++|++i

    #!/usr/bin/perl use strict; use warnings; $_ = 'oireqo````'; unless($_ =~ /^a/m){print "no matc ...

  8. js强制浏览器重新渲染页面

    今天遇到一个浏览器兼容性问题,大致原因就是在用某一个前端框架做分页时,由于是使用的jQuery的hide和show方法,其本质是为某个iframe加上一个display=none,这在chrome中是 ...

  9. Java多线程常见概念

    进程和线程的区别 进程是资源分配的最小单位,线程是CPU调度的最小单位 线程不能看做独立应用,而进程可以 进程有独立的地址空间,互相不影响,线程只是进程的不同执行路径 线程没有独立的地址空间,多进程的 ...

  10. JDBC常用驱动和语法汇总

    A. Firebird url=jdbc:firebirdsql:[HOST_NAME]/[PORT:][FULL_PATH_TO_DATABASE_FILE] driver=org.firebird ...