2010.6.17

本文详细介绍了MFC框架中对象的析构顺序及其对堆内存管理的影响,包括如何正确释放内存以避免野指针问题。

 

一、MFC框架的析构顺序:

    1、view析构函数->view中分配的堆对象(如果该对象有继承关系,则先调用子类析构函数,然后调用基类析构函数)
    2、MainFrame析够函数->MainFrame中分配的堆对象(如果该对象有继承关系,则先调用子类析构函数,然后调用基类析构函数)

二、关于释放堆内存

   1、凡是在堆上申请的内存块(用new申请),都需要释放。

       a、如果是在函数内部申请,并且没有引用到别的地方,要在函数内部释放掉;

       b、如果是在类中定义的变量,需要在析构函数中释放;

       释放掉内存块儿后,需要将原有的指针设置为NULL,否则将成为悬空指针(野指针),野指针非常危险,如果其它地方使用,可能指向未知的内存块儿。

   2、比如一个Map,每个关键字key,对应一个堆上分配的指针。

       当需要清除一个键/值对儿的时候,需要先释放value对应的内存块儿。

 

转载于:https://www.cnblogs.com/peijihui/archive/2010/06/17/1759708.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值