删除无效指针C ++时出现段故障

时间:2018-11-18 15:13:21

标签: c++ oop pointers memory memory-leaks

我有一个将其他类对象的指针存储为void *的类,但是析构函数遇到问题。 我知道段错误来自此析构函数,因为当我添加(到第一行)

 shapeObject = nullptr;

它似乎消失了,但我不希望出现内存泄漏。

 ~ShapeElem() {

        if (shapeType == AClass)
            delete static_cast<AClass* >(shapeObject);
        else if (shapeType == BClass)
            delete static_cast<BClass* >(shapeObject);

        shapeObject = nullptr;
    }

那我该怎么删除这个空指针shapeObject。

注意:由于这是一项家庭作业,因此我无法使用模板来处理不同的类

我必须使用void *。

1 个答案:

答案 0 :(得分:0)

现在可以了。我为ShapeElem设置了默认构造函数 就是这样。

ShapeElem(){
     shapeObject = nullptr;
     shapeType = ShapeType::AClass;
 }

我仍然不确定,但是可以。