构造函数 - 内存分配失败
Constructor - memory allocation failed
我有一个构造函数,它用 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
实例,即异常。
如果构造函数失败,则会销毁所有已完全构造的成员和基,并且不会创建类型的有效实例。
因此,如果您通过异常离开构造函数,您的r
和c
根本没有价值,因为它们不存在。
确实永远不会到达你似乎担心的循环。
相关文章:
- 当需要超过16GB的连续内存时,内存分配失败
- 分配给转换运算符失败-C++
- 在构造函数中分配内存失败是如何冒泡的
- CudaMalloc 在分配内存时失败
- C++ 错误的分配应用程序失败
- 用户DLL/EXE中的堆分配失败
- 如何防止连续使用"new"时分配失败时内存泄漏
- 无论如何如何重新分配内存,即使 realloc() 在 c++ 中失败
- 使用 QAbstractListModel 分配 QML 布尔属性失败
- OpenCv C++,将传入的垫子分配给函数中的垫子失败
- 在分配的结构中初始化 std::map 在 Windows 上失败
- 分配失败了文件*类
- 动态分配缓冲空间为二维数组 - 为什么失败
- C++内存分配失败(使用 new & delete)
- 合并排序逻辑分配内存失败
- 如何创建随机内存分配失败
- 为什么将boost::move()的返回值分配给非常数引用在C++0x模式下失败,但在C++03模式下有效
- 为什么 2^80 字节的内存分配不会失败?
- 如果我的C++“新”内存分配失败,如何找出返回值
- 复制构造函数失败..重载,动态分配