C++函数中,两个自动释放内存的动态内存申请类

本文介绍了如何在C++中利用对象的析构函数特性,创建两个类来自动管理内存释放。第一个类专注于内存管理,而第二个类则同时管理内存和对象,以解决函数中大量手动释放内存的问题,提高代码整洁性和错误处理效率。
摘要由CSDN通过智能技术生成

最近做一个事情,实现一个流程交互,其中主交互流程函数中,涉及较多的内存申请,

而健康的函数,都是在函数退出前将手动申请不再需要的内存释放掉,

使用很多方法,都避免不了较多的出错分支时,一堆的if free/delete,代码长而且不好管理

因此,利用C++对象离开作用域会自动调用析构函数的特点,在这儿实现了两个自动释放内存的动态内存申请类

第一个类,只管理内存,不并管理对象

#include <vector>

class XAutoFreeMem
{
protected:
    std::vector<void*> vec_memorys_;

public:
    XAutoFreeMem::XAutoFreeMem() {};

    virtual XAutoFreeMem::~XAutoFreeMem()
    {
        //释放对象时,释放管理的内存
        for(auto item : vec_memorys_){
            free(item);
        }
    }

    //通过此接口来申请内存
    void* malloc_mem(unsigned int nsize) 
    {
        void* ptr = malloc(nsize);
        if (nullptr != ptr) {
            vec_memorys_.push_back(ptr);
        }
        return ptr;
    }
};

第二个类,能够同时支持内存管理、对象管理

typedef void (*delete_obj_func)(void*);

class XAutoFreeObject : public XAutoFreeMem
{
private
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值