私は構造を持っています
typedef struct myStruct_st
{
int a;
}myStruct;
を使用して作成できます
myStruct * myStruct_new()
{
printf("Allocate\n");
return new myStruct;
}
そしてを使用して削除
static void myStruct_free(myStruct * ptr)
{
printf("Deallocate\n");
delete ptr;
}
構造に割り当てられたメモリを自動的に解放したい
この目的のために、私はテンプレートを書きました
template <class T>
class scoped_del
{
public:
scoped_del(T * p, void (*mfree)(T *)) :
p_(p),
mfree_(mfree)
{
}
~scoped_del()
{
mfree_(p_);
}
private:
T * p_;
void (*mfree_)(T *);
};
そしてそれをそのように使う
int main()
{
myStruct * st = myStruct_new();
class scoped_del<myStruct> ptr_st(st, myStruct_free);
return 0;
}
stlまたはboostを使用して、より標準的な方法にするにはどうすればよいですか?