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

时间:2018-03-15 23:20:15

标签: c++

我不太了解C或C ++,但我认为在创建数组时使用malloc来请求内存,然后在分配值之前检查内存是否已分配。在C ++中,您使用new实现数组。通过检查数组是否为null,检查C ++中数组的内存分配是否与C相同?

例如,

int main()
{
      int* myArr = new int[10];
      if(myArr!=NULL)
      {
           //DO SOMETHING
      }
}

我发现大多数计算机都有大量内存,导致今天内存不足,但我也明白,如果不做这样的事情,可能会在未来发生意外错误。

更新:我试图让我的例子变得简单。正如评论中提到的,我指的是动态内存分配。我正在尝试实现堆数据结构。作为堆的一部分,存在一个用于存储堆值的数组。当堆已满时,阵列必须按照2的下一个幂进行扩展。因此,我可以将堆初始化为10,但是当我达到10时,我将需要扩展到16.如果有足够的项,则堆将达到2 ^ N。因此,我正在调用一个具有HEAP指针参数的函数。然后我创建一个新数组并将现有数组中的值复制到新数组。在这样做时,我在考虑如果由于内存不足而无法创建新数组会发生什么。我可能想在退出之前将值写入文件。

1 个答案:

答案 0 :(得分:-2)

不,要制作一个阵列,你可以这样做:

int main()
{
   int myArr[10];
   // DO SOMETHING
}

如果必须使用动态分配,请使用不带new说明符的std::nothrow,以便在分配失败时抛出std::bad_alloc异常。这最终相当于检查malloc返回NULL指针。

如果你然后使用std::nothrow说明符,是的,请检查NULL指针。在现代C ++中,那是nullptr。在古董C ++中,你所展示的是NULL(或0)。