Ana*_*and 0 c++ pointers void-pointers
如何释放void指针.
struct vStruct {
void *vPtr;
struct vStruct *next;
};
struct vStruct sObj;
struct vStruct *sObjNew = sObj;
delete sObjNew->vPtr; -----------> Is this correct way to delete void pointer
delete sObjNew;
Run Code Online (Sandbox Code Playgroud)
显示错误运算符'delete',应用于具有未定义行为的void*参数,并且很可能不会调用对象的析构函数.
你没有delete一个无效指针.为什么?因为:
'delete',应用于
void*参数具有未定义的行为,并且很可能不会调用该对象的析构函数.
您的编译器如何知道指针对象具有哪种类型?那么哪个析构者要打电话?(虽然它可能决定要释放多少内存,具体取决于分配机制.)
不要存储void*- 使用"真实"指针类型.如果您需要"隐藏"真实类型,请考虑使用多态而不是过时的C实践.