c++ 内存泄露的检查

对于c++的内存泄露检测,除了我们自己手动检查以外,还可以使用c++中的函数来帮助我们检测,

如下代码:

#include "stdafx.h"
#include <string>
#include<iostream>
#include <crtdbg.h>
using namespace std;
int main()
{

    char *p=new char[10];
    //char *pp=new char[100];

    delete p;
    _CrtDumpMemoryLeaks();
    //cout<<p<<endl;
    return 0;
}

调试的时候按F5,而不是ctrl+F5否则你看不到任何调试信息。

如果将上面代码中的注释取消掉,那么会有如下的调试信息输出,提示如下:

调试信息会输出内存泄露的大小等信息。

PS:使用这个函数的时候记得加上头文件#include <crtdbg.h>。

时间: 2024-12-20 08:43:27

c++ 内存泄露的检查的相关文章

java内存泄露

Java是如何管理内存 为了判断Java中是否有内存泄露,我们首先必须了解Java是如何管理内存的.Java的内存管理就是对象的分配和释放问题.在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间.另外,对象的释放是由GC决定和执行的.在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的,这种收支两条线的方法确实简化了程序员的工作.但同时,它也加重了JVM的工作.这也是Java程序运行速度较慢的原因之一.因为,G

学会用Clang来进行内存泄露分析

最近项目出现了内存泄露的问题,对于PC x86平台来说,一点点的内存泄露往往不会出错,很难进行debug调试.这个时候我们可以用到苹果给我们带来的神器--Clang编译器来进行内存泄露分析检测,开关打开之后,生成出来的二进制文件对内存泄露的敏感程度非常高,只要有内存泄露基本就会立马停止并进行报错. 由于项目是用CMake进行组织,因此使用CMake的方法来进行开关的打开,首先要让CC和CXX都变成Clang和Clang++(注意:在Clang下有时候会对inline函数报错,需要将inline去

Tomcat内存泄露解决方法

环境: 今天早上,实施人员找我说,部署在tomcat上的一个项目总是间隔一段时间就自动关闭了,我询问一些可能发生的情况后,我就找了tomcat下的日志文件catalina.2015-04-13.log,localhost.2015-04-13.log这两文件,经过一番查找后,看到了下面一段 异常详细信息介绍: http://confluence.atlassian.com/pages/viewpage.action?pageId=218275753 原因大概是说tomcat 6.025之后引入了

简单介绍使用Eclipse Memory Analyze Tool来检查内存溢出和内存泄露

1. 安装Eclipse Memory Analyze Tool(Eclipse MAT) Eclipse Help --> Install New Software... --> Add... --> 如下图 -> finish 重启 就行了 PS: MAT新版本的链接在此http://www.eclipse.org/mat/downloads.php (Location填的是Update Site) 2. 使用MAT跑Java项目的Dump,检查内存溢出和内存泄露 右键Java

C++内存泄露检查方法

重载全局new 可以写多个版本的new,却只有一个delete: 重载全局new会发生一些不匹配的串扰,尤其是有第三方库的情况下: 我的解决办法 重载单个class的new: 原始类型不能重载,那就使用类似于malloc的办法分配: 我的cfan开源库实现了这个方法 操作系统hook机制 http://my.oschina.net/chunquedong/blog/271248 这些都不跨平台,使用也不方便: valgrind等工具 不跨平台: 除非能实现持续集成,否则很难及时反馈: 有时候引起

raywenderlich写的关于内存管理,第二篇,关于如何检查内存泄露

原文链接地址:http://www.raywenderlich.com/2696/how-to-debug-memory-leaks-with-xcode-and-instruments-tutorial 著作权声明:本文由http://www.cnblogs.com/andyque翻译,欢迎转载分享.请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢! 教程截图: 作为一名无证程序员,无论你多么精通Objective-C的内存管理,随着时间的推移,你也不可避免的犯内存相关的错误.但通常因为代

valgrind--CPP程序内存泄露检查工具

内存泄漏是c++程序常见的问题了,特别是服务类程序,当系统模块过多或者逻辑复杂后,很难通过代码看出内存泄漏. valgrind是一个开源的,检测c++程序内存泄漏有效工具,编译时加上-g选项可以定位到代码行,同时还检查'野指针',检查malloc与free是否匹配等功能. 参考: 1. Linux下几款C++程序中的内存泄露检查工具 2. linux工具之检测内存泄漏-valgrind 原文地址:https://www.cnblogs.com/embedded-linux/p/9749332.h

android 内存泄露 /进程 内存检查 --DDMS工具

一.监控操作步骤 1.打开eclipse,切换到DDMS模式,连接设备,打开usb调试,如图: 2.在devices栏中会显示连接的设备,选择要监控的程序包名 3.点击devices视图中update Heap 4.在Heap视图中点击Gause GC, 二.判断内存泄露 Heap视图中部有一个Type叫做data object,即数据对象,也就是我们的程序中大量存在的类类型的对象.在data object一行中有一列是"Total Size",其值就是当前进程中所有Java数据对象的

VS2010检查内存泄露

VS2010中的C++程序内存泄露检测 对于MFC程序是支持内存检测的.对于非MFC程序而言,CRT有一套内存泄露的函数,最常用的是 _CrtDumpMemoryLeaks();如下所示: #include <crtdbg.h> int main() { int *pInt = new int(); char *pChar = new char(); double *pDouble = new double(); // position 1 _CrtDumpMemoryLeaks(); ret