构造函数 - 内存分配失败

Cie*_*eja 1 c++ arrays constructor multidimensional-array

我有一个构造函数,用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道内存分配是否会失败,它仍然会使用非零值初始化行和列.我该怎样预防呢?

Bau*_*gen 9

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

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

所以,你rc你通过一个例外,离开你的构造,因为它们不存在没有价值可言.

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