使用静态数组内存C ++处理内存不足的情况

时间:2017-01-23 19:50:53

标签: c++ arrays memory static

使用初始化为静态内存的数组时,是否有办法处理内存不足错误,如下面的代码所示?

namespace x{
static unsigned char arr[9999999]; // how to catch etc. if there is out of memory exception

};

3 个答案:

答案 0 :(得分:3)

无法检测到;你的程序会崩溃。无法加载,或进入UB土地。希望,如果您的平台的大小完全荒谬,您的编译器将在编译时对其进行诊断,但它不需要。

答案 1 :(得分:1)

编译并链接可执行文件时,会包含代码,该代码执行在通过main()函数调用程序之前创建全局和静态数据结构的步骤。您所说的阵列的构造将在您的任何代码执行之前发生,并且因此会导致代码中无法捕获的问题(如果可以捕获的话)。

答案 2 :(得分:0)

给定代码不太可能出现内存不足问题。所有它要做的就是声明一个相当大的符号,通常,程序行为与仅仅有一个太大而无法加载到内存中的程序没有区别 - 加载器会抱怨。但样本的大小并不大。