如何编写删除指针而不是宏的 C++ 函数

问题描述 投票:0回答:1

我在遗留代码中发现了一个删除指针的宏。我尝试用函数替换它,但它使应用程序崩溃了。我不明白为什么。我的功能有问题吗?

//Legacy Macro
#define DEL_PTR(x) { if (x != nullptr){ delete x; } }

//My function
void delPtr(void * x) { if (x != nullptr){ delete x; } }
c++ pointers macros delete-operator
1个回答
0
投票

你永远不想在

delete
上调用
void*
,因为我们实际上并不知道它指向什么。相反,使用像

这样的函数模板
template <typename T>
void delPtr(T* x) { if (x != nullptr){ delete x; } }
© www.soinside.com 2019 - 2024. All rights reserved.