вот простейшая программа:
#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));
но почему какая-то платформа сразу выбрала память кучи? Зачем?
c
не выделяется в куче. Он сохраняется в сегменте данных. Сегмент данных сохраняется при загрузке процесса.