内存超限 错误: 这种错误通常发生在程序未设定内存限制,或者程序试图分配超过特定问题所规定的内存上限时。举个例子,如果内存限制是 256 MB,那么我们就没有必要编写需要超过 256 MB 内存的代码。一般来说,所有在线判题平台的内存限制都在 256 MB 左右。导致出现此错误的原因可能还有很多。
程序 1:
下面是一个声明大小为 10^7 的全局一维数组的 C++ 程序:
C++
CODEBLOCK_9fa300a3
输出:
9999999
解释: 这段代码将成功编译并输出 9999999,因为我们在全局范围内声明了一个大小为 10^7 的一维数组。
程序 2: 下面是一个声明大小为 10^8 的全局一维数组的 C++ 程序:
C++
CODEBLOCK_1e17e219
输出:
Memory Limit Exceeded
或者
Segmentation Fault (SIGSEGV)
解释: 在上面的程序中,我们会遇到内存超限错误,但在某些在线平台上,这可能会表现为段错误(SIGSEGV)。这是因为用户通常只能声明大小为 10^7 的全局一维数组,不能再大了。而在本例中,我们声明了一个大小为 10^8 的全局一维数组,因此导致了内存超限 (MLE) 错误的发生。
注意: