检查是否已成功创建新阵列

Check that the new array was successfully created

本文关键字:阵列 新阵列 创建 是否 成功 检查      更新时间:2023-10-16

我对 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)。