这是一个最简单的程序:
#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内存空间的全局字符数组。它将超过大多数在线评判平台的限制。
但是,当我使用此代码提交到不同的oj平台时,结果是不同的。 例如,poj和hduoj被“接受”,但是zoj将是“内存限制”。
所以我想当程序运行时,不会立即分配100MB内存,直到你使用memset(c,0,sizeof(c));
但为什么有些平台会立即分配堆内存? 为什么呢?