释放空指针

2024-01-16

如何释放空指针。

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;

显示错误运算符“删除”,应用于具有未定义行为的 void* 参数,并且很可能不会调用对象的析构函数。


你不delete一个空指针。为什么?因为:

“删除”,应用于void*参数具有未定义的行为,并且很可能不会调用对象的析构函数。

您的编译器如何知道指针对象具有哪种类型?那么要调用哪个析构函数呢? (尽管它可能可以确定要释放多少内存,具体取决于分配机制。)

不要存储void*— 使用“真正的”指针类型代替。如果您需要“隐藏”真实类型,请考虑使用多态性而不是过时的 C 实践。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

释放空指针 的相关文章

随机推荐