检查是否已成功创建新阵列
Check that the new array was successfully created
我对 C 或 C++ 了解不多,但我认为使用 C 创建数组时,您使用 malloc 请求内存,然后在分配值之前检查内存是否已分配。在C++中,您将改为使用 new 实现数组。是否会通过检查数组是否为空来检查 C++ 中数组的内存分配与 C 中的内存分配相同?
例如
int main()
{
int* myArr = new int[10];
if(myArr!=NULL)
{
//DO SOMETHING
}
}
我知道大多数计算机都有很多内存,这使得今天内存不足的可能性降低,但我也明白,不做这样的事情可能会导致以后出现意想不到的错误。
更新:我试图保持我的例子简单。正如评论中提到的,我指的是动态内存分配。我正在尝试实现堆数据结构。作为堆的一部分,存在一个数组来存储堆的值。当堆已满时,阵列必须按设计扩展下一个 2 的幂。因此,我可以将堆初始化为 10,但当我达到 10 时,我需要扩展到 16。给定足够的项目,堆将达到大小 2^n。因此,我调用了一个具有 HEAP 指针参数的函数。然后,我创建一个新数组并将值从现有数组复制到新数组。在执行此操作时,我在考虑如果由于内存不足而无法创建新数组会发生什么。我可能想在退出之前将值写入文件。
不,要创建一个数组,请执行以下操作:
int main()
{
int myArr[10];
// DO SOMETHING
}
如果必须使用动态分配,请使用不带std::nothrow
说明符的new
,以便在分配失败时引发std::bad_alloc
异常。这最终相当于检查malloc
返回 NULL 指针。
如果您确实使用了std::nothrow
说明符,那么,是的,请检查 NULL 指针。在现代C++,这nullptr
.在古董C++中,正如您所展示的那样,这是NULL
(或0
)。
相关文章:
- 来自复杂主机数据的阵列火力阵列
- 新的阵列分配
- 不使用新的动态2D阵列
- 重载新阵列运算符的安全性如何?
- GlobalMemoryStatusEx 不考虑新阵列
- 需要帮助从12个字节生成新的24字节RGB查找阵列,或者是一种更好的编码方法
- 将数据从阵列火阵列传输到犰狳结构
- 在阵列新表达中的直接限制与列表
- 新的一个一维阵列,非常大,例如60000*60000
- 检查是否已成功创建新阵列
- 复制到新阵列时出现动态内存分配问题
- 关于操作员新的静态阵列
- 重新"新"的 TCHAR* 阵列
- 2D阵列声明阵列中的模棱两可
- 阵列不能两次将相同的名称保存,当要添加新字符串时,程序应检查以查看该名称是否已经存在
- 用另一个阵列将阵列改组
- 在C++使用新方法打印2d阵列
- char阵列使用新的实例化后显示垃圾
- C++ & 符号 在新阵列前面
- 阵列和阵列堆栈之间的区别