我有一个构造函数,用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;
}
}
我想知道内存分配是否会失败,它仍会使用非零值初始化行和列。我该如何预防?
答案 0 :(得分:8)
如果new
无法分配内存,则会抛出std::bad_alloc
的实例,即异常。
如果构造函数失败,则会销毁所有已完全构造的成员和基础,并且不会创建您的类型的有效实例。
因此,如果您通过异常离开构造函数,那么r
和c
根本没有任何价值,因为它们不存在。
你确实永远不会达到你似乎担心的循环。