【发布时间】:2023-03-18 14:27:01
【问题描述】:
下面程序中的空指针是否可以删除。
class Sample
{
public:
int intVal;
float floatVal;
};
main() {
Sample *samObj = new Sample();
void *vPtr = samObj;
delete vPtr;
}
这只是我编写的一个示例程序。实际上,在我的项目中,除了做类似的事情,我别无他法。这个类似的代码在 .h 接口文件中,当我包含这个文件并编译其他组件时,编译器会发出警告消息“警告:删除 'void*' 是未定义的”,但我怀疑是因为我已经分配了 void Sample 对象类型的指针,删除这个指针不安全吗?
【问题讨论】:
-
可能会在这里找到答案stackoverflow.com/questions/941832/…
-
在您的示例代码中,您不是在删除
vPtr,而是在删除samObj,这很好。 -
您到底想完成什么?一旦你删除了
samObj,vPtr就没有用了,因为你也有效地删除了它。 -
对不起!!!代码应该是“删除 vPtr”
标签: c++ void-pointers