在线判断平台中的全局数组堆内存分配

时间:2013-10-08 14:00:48

标签: c++ arrays memory-management

这是一个最简单的程序:

#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));

但为什么有些平台会立即分配堆内存? 为什么呢?

1 个答案:

答案 0 :(得分:1)

c未在堆上分配。它存储在data segment中。加载进程时保留数据段。