下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

怎样在VC++中检测内存泄露呢?

作者:课课家教育     来源: http://www.kokojia.com点击数:1251发布时间: 2017-01-21 08:00:39

标签: 内存单元VC++编程代码

大神带你学编程,欢迎选课

  内存泄漏也称作"存储渗漏",用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。那么我们怎样在VC++中检测内存泄露呢?现在我们就一起来学习一下吧。

怎样在VC++中检测内存泄露呢?_内存单元_VC++_编程代码_课课家

  大家在使用VC++进行编程的时候,应该也有发现其实内存泄露是一件非常麻烦的事情。特别有一点,那就是内存泄露有时还会产生一些较为严重的后果。另外大家都应该找到,这一种BUG(在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题)还是比较难查找的。幸运的是,我们现在只需要借助一些第三方的软件,那么就可以十分方便的查找出会产生泄露的地方了。就,比如说,BoundsChecker。如果大家想要为了可以更加的简单一点,了解一下我们自己开发的程序是不是真的存在内存泄露?那么还可以直接使用VC的调试库,这样就可以直接查找出来了,无需借助第三方软件。

  内存泄漏检测的设置

  大家知道检测内存泄漏的基本工具是什么吗?没错,就是CRT调试堆函数以及调试器这两个工具。如果大家为了可以使用调试堆函数,那么在大家所开发的程序中,就一定会包含有下面的一些说明,具体的说明,如图所示:

内存泄漏检测的设置

  一、#include说明

  在这里,大家要注意一点,那就是#include说明一定要按照顺序进行说明。假如说大家将顺序改变了,那么大家所使用的函数可能就会出现不可以正常工作的情况了。包含crtdbg.h的_free_dbg以及_malloc_dbg,这都会将free以及malloc函数映射到测试版中去。当然啦,它可以进行跟踪内存的释放以及分配。这一种映射的话,仅仅只可以在一个测试体系中发生(换一句话说,仅仅只有当_debug被定义时)。所释放的体系使用的功能通常都是free以及malloc两种。

  二、#define说明

  现在我们就来说一下#define说明吧。这一种说明映射了CRT堆函数的低级版本到相对应的测试版本。虽然说这一个说明是并不需要的,但是如果没有它的话,那么内存泄漏的地方所含有的仅仅只是一些没有多大用处的相关信息。

  但是假如说我们在程序中都已经新增加了刚才的那些说明,那么大家就可以通过程序中包含下面的说明来进行释放内存的信息了。具体的编码程序如下:

  _CrtDumpMemoryLeaks();

  当大家将自己所开发的程序在调试情况下运行的时候,如果想要看到内存泄漏的信息的话,那么可以在输出窗口的Debug标签处_CrtDumpMemoryLeaks表现出来。假如说真的是出现内存泄漏信息的话,那么就是类似下面这样的编程代码。换句话说,当你看到这样的编程代码的时候,就证明你的程序出现内存泄漏的情况了,一定要及时防范哟。具体的编程代码,如图所示:

#define说明

  小编结语:

  今天的编程语言教程就介绍到这里了,主要是为大家介绍一下学习在VC++中检测内存泄露。其实方法总的来说,还是比较简单易学的,大家不妨跟着小编一起来学习一下。如果喜欢我们课课家教育的教程,记得要给我们点赞哟!

赞(11)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程