【发布时间】:2013-10-15 12:01:15
【问题描述】:
这是一个最简单的程序:
#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));
但是为什么某些平台会立即分配堆内存呢? 为什么?
【问题讨论】:
标签: c++ arrays memory-management