vc 开发(5)

(1)在所检测的程序段开始处建立一个CMemoryState对象,调用其成员函数Checkpoint,以取得当前内存使用情况的映射;
(2)在所检测的程序段的末尾处再建立一个CMemoryState对象,调用其成员函数Checkpoint,以取得当前内存使用情况的映射;
(2)再建立第3个CmemoryState对象,调用其成员函数Difference,把第一个CmemoryState对象和第二个CmemoryState对象作为其参数,如果两次内存映射不相同,则该函数返回非零,说明此程序段中有内存漏洞。
    下面来看一个例子:
    #ifdef _DEBUG
    CMemoryState oldMemState, newMemState, diffMemState;
    oldMemState.Checkpoint();
    #endif
    CString s = "This is a frame variable";
    // the next object is a heap object
    CPerson* p = new CPerson("Smith", "Alan", "581_0215");
    #ifdef _DEBUG
    newMemState.Checkpoint();
    if ( diffMemState.Difference(oldMemState, newMemState ) ){
        TRACE("Memory Leaked!//n");
    }
    #endif
    在此例中,首先定义了3个CMemoryState对象。然后在需要检测内存漏洞的代码前后分别调用CMemoryState对象成员函数 Checkpoint,再后调用第3个CMemoryState对象的成员函数Difference来判断是否有内存漏洞,如果有,则使用TRACE宏打印提示消息。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值