在函数调用上获得堆栈溢出

时间:2011-12-09 19:01:21

标签: c++ inheritance stack-overflow

我有一个基类,三个类继承自。每当在函数中实例化这些子类时,我会在函数进入正文时获得堆栈溢出。它们可以在结束或开始时实例化,但这并不重要。一旦输入函数体,我就会出现堆栈溢出。如果删除了类,则该函数正常运行。子类除了一个重写函数及其构造函数和析构函数之外不包含任何内容。构造函数和析构函数都是空的。

int main()
{
    Borrow borrow;

    MovieStore store( "STORE!!!!!!" );
    store.initalize();
    store.processTransaction();

    return 0;
}

不确定这会有多大帮助,但基本上借用的是儿童班。输入函数体后,将产生堆栈溢出。即使我在返回0之前实例化它,它仍然会在进入函数体时崩溃。如果删除,程序将正常运行。我实际上是在一个不同的函数中声明借用(main只是更短),但无论放入什么函数它都具有相同的效果。

class Borrow : public Transaction
{
public:
    Borrow();
    virtual ~Borrow();


    virtual void perform( Customer *, Item * );
};

借用和其他子类是相同的。空构造函数和析构函数,带有一个重写的虚函数。

执行的执行是:

void Borrow::perform( Customer *customer, Item *aMovie )
{
    customer->addMovie( aMovie, "B" );
}

2 个答案:

答案 0 :(得分:1)

我猜你的函数是递归的,你永远不会停止调用它。

答案 1 :(得分:1)

感谢UncleBens,我能够弄清楚一个具有大对象的类被多次实例化,从而造成堆栈溢出。