Распределение памяти кучи глобального массива в онлайн-платформе судей

0

вот простейшая программа:

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

это очень простая проблема + b, почти каждый онлайн-судья использует ее в качестве первой проблемы.

он объявляет глобальный массив символов, который занимает пространство памяти 100 МБ. и это превысит предельный уровень для большинства онлайн-судейских платформ.

но, когда я использую этот код для отправки на другую платформу oj, результат отличается. например, poj и hduoj "принимаются", но zoj будет "пределом памяти".

поэтому я предполагаю, что когда программа запустится, память 100 МБ не будет доступна сразу, пока вы не будете использовать memset (c, 0, sizeof (c));

но почему какая-то платформа сразу выбрала память кучи? Зачем?

Теги:
arrays
memory-management

1 ответ

1
Лучший ответ

c не выделяется в куче. Он сохраняется в сегменте данных. Сегмент данных сохраняется при загрузке процесса.

  • 0
    Большое спасибо за ответ. но мне интересно, если он выделен сразу?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню