小编own*_*fos的帖子

当类在构造函数中动态分配自身时,为什么会发生堆栈溢出而不是std :: bad_alloc?

我制作了一个类,它使用new(只是为了好玩!)递归地创建自己,希望std::bad_alloc由于无限的动态分配(堆溢出)而抛出该类。但是发生堆栈溢出而不是std::bad_alloc。为什么会这样?

class Overflow
{
private:
    Overflow* overflow;

public:
    Overflow()
    {
        overflow = new Overflow();
    }
};

int main()
{
    Overflow overflow_happens; // stack overflow happens instead of std::bad_alloc exeption
}
Run Code Online (Sandbox Code Playgroud)

@Caleth问如果我将new Overflow()更改为new Overflow [100000],会发生什么,这给了我std::bad_alloc。根据答案,这岂不是还会给我堆栈溢出吗?

c++ stack-overflow bad-alloc

13
推荐指数
2
解决办法
371
查看次数

标签 统计

bad-alloc ×1

c++ ×1

stack-overflow ×1