请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

 找回密码
 立即注册
查看: 827|回复: 1
收起左侧

c++真香。举个简单的小栗子之内存管理。

[复制链接]

8

主题

26

回帖

55

积分

初级会员

积分
55
发表于 2021-12-29 13:29:27 | 显示全部楼层 |阅读模式
本帖最后由 tengye 于 2021-12-29 13:32 编辑

/*****************************************************************
Copyright (c), 2021.12.28, tengye Biotechnology Co., Ltd
Description:
auto free memory arry by structure  class object
example:
void function()
{
   AutoFreeArry<char> inarry(10);
         
         char *marrt = inarry.ptr;
         marrt[0]=0;
}
*****************************************************************/
#ifndef    __AUTOFREEARRY_H
#define    __AUTOFREEARRY_H

template<typename T>
class AutoFreeArry
{
public:
  AutoFreeArry(int arrylen)
  {
    ptr = NULL;
    ptr = new T[arrylen];
  };
  ~AutoFreeArry()
  {
    if(ptr!=NULL)
      {
        delete []ptr;
      }
  }
  T *ptr;
private:
  AutoFreeArry() {};
  AutoFreeArry &operator=(const AutoFreeArry&)
  {
    return *this;
  };
  void* operator new(size_t) throw() { return NULL;};
  void operator delete(void*){};
  explicit        AutoFreeArry (const AutoFreeArry&) {};
};
#endif

函数内申请内存,不用担心释放。构稀函数会自动释放。更高级一点还有unique_ptr 智能指针 shared_ptr智能指针。有人说MDK不能用模板,请注意:模板类只能写在xxx.h 文件。如上所示。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
发表于 2021-12-29 13:41:52 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-3-29 16:36 , Processed in 0.211091 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表