我不太了解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指针参数的函数。然后我创建一个新数组并将现有数组中的值复制到新数组。在这样做时,我在考虑如果由于内存不足而无法创建新数组会发生什么。我可能想在退出之前将值写入文件。
答案 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
)。