合法的方式将destructor信息存储到void*

Legit way to store a destructor information to a void*

本文关键字:存储 void 信息 destructor 方式      更新时间:2023-10-16

在这样的函数指针中存储void指针的删除信息是否合法?

typedef void(*deleter)(void*);
template <class T> void deleteVoidPointer(void* target)
{
    delete static_cast<T*>(target);
}
int main()
{
    void* p = new int;
    deleter del = deleteVoidPointer<int>;
    del(p);
    return 0;
}

我在这里是否缺少任何副作用,还是这是跟踪指针灾难信息信息的合法方法?(除了丢失的检查是否是deletevoidpointer中的nullptr(

是的,您显示的代码是完全有效的。

并且没有丢失的检查:在空指针上呼叫delete无需做任何事情。