gpt4 book ai didi

c++ - 全局运算符删除 - 语法

转载 作者:行者123 更新时间:2023-11-28 01:07:45 25 4
gpt4 key购买 nike

我继承了一个不可更改的 C 结构,其中包含指向(分配的)内存的指针。

   typedef struct {
int id;
int * val;
} T;

我想对这些对象使用 new 和 delete,我想知道是否可以在全局范围内重载 delete。我没有首先重写结构/类的选项。问题是我找不到正确的语法。这就是我所拥有的 - 它编译但显然失败,因为该函数应用于所有删除调用:

   void operator delete(void*p) throw() {
T * t = reinterpret_cast<T*>(p);
free(p->val);
}

我是在尝试不可能的事情吗?我读过 operator delete 重载不必是成员函数,但这是否只是提供了一种为所有指针编写通用 delete 的方法?

最佳答案

嗯,这似乎是一个大锤方法,如果你只是这个结构的用户,担心它的内存管理方面,但又不能修改它,为什么不把它包装在你的代码中呢?

class Sane_T
{
public:
Sane_T()
{
// do stuff
}

~Sane_T()
{
// Now cleanup..
if (_inst.val)
free(_inst.val);
}

private:
T _inst;
};

关于c++ - 全局运算符删除 - 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com