构造函数 - 内存分配失败

时间:2014-12-18 13:49:49

标签: c++ arrays multidimensional-array constructor

我有一个构造函数,用r行和c列

创建和清空A.
A::A(int r, int c)
    : row(r), column(c), e(new int[r*c])
{
    for (int i = 0; i < r*c; i++)
    {
        e[i] = 0;
    }
}

我想知道内存分配是否会失败,它仍会使用非零值初始化行和列。我该如何预防?

1 个答案:

答案 0 :(得分:8)

如果new无法分配内存,则会抛出std::bad_alloc的实例,即异常。

如果构造函数失败,则会销毁所有已完全构造的成员和基础,并且不会创建您的类型的有效实例。

因此,如果您通过异常离开构造函数,那么rc根本没有任何价值,因为它们不存在。

你确实永远不会达到你似乎担心的循环。