构造函数 - 内存分配失败

Constructor - memory allocation failed

本文关键字:失败 分配 内存 构造函数      更新时间:2023-10-16

我有一个构造函数,它用 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;
    }
}

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

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

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

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

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