这是一个最简单的程序:
#include <iostream>
using namespace std;
char c[1000 * 1000 * 100];
int main() {
int a, b;
while (cin >> a >> b) {
cout << a+b << endl;
}
return 0;
}
这是一道非常简单的a+b题,几乎每个在线评委都把它作为第一道题。
它声明了一个占用 100MB 内存空间的全局 char 数组。并将超过大多数在线评委平台的内存限制。
但是,当我使用此代码提交到不同的 oj 平台时,结果是不同的。例如,poj 和 hduoj 是“接受”,但 zoj 将是“内存限制”。
所以我猜当程序运行时,100MB 内存不会立即分配,直到你使用 memset(c, 0, sizeof(c));
但是为什么有些平台会立即分配堆内存呢?为什么?