|
本帖最后由 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 文件。如上所示。
|
|