堆异常检测-MS-Visual Studio

49 篇文章 1 订阅
49 篇文章 1 订阅
  • 在向系统申请堆空间的时候,虽然程序员不知道所申请的堆空间的数据结构,但是系统或者啥(微软可以知道)知道的,所以如果我们需要检查堆的使用异常,需要借助微软提供的机制来检堆的正常使用,从而发现在程序过程中出现的非法使用堆的情况,保证我们程序的高质量!
  • 这里面最重要的函数莫过于_CrtCheckMemory(),该函数使用简单,在需要测试堆异常的代码的开始和结束端分别调用即可。具体例子如下所示:
    #include <stdio.h>
    #include <Windows.h>
    #include <assert.h>
    #include <crtdbg.h>
    struct tvt 
    {
    	int		i;
    	char	c;
    	char	a[];
    };
    void Test()
    {
    	char* p = new char[4];
    
    	assert(_CrtCheckMemory());
    	strcpy(p, "12345");
    	assert(_CrtCheckMemory());
    }
    int main()
    {
    	Test();
    	return 0;
    }

  • 其运行结果会提示异常,选择忽略之后,会显示如下错误:
    // Assertion failed: _CrtCheckMemory(), file e:\code\win32\test1\main.cpp, line 17

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值