19.12.2006, 01:37
общий
это ответ
Здравствуйте, Александр Трет!
Когда вы пишете
int i [180] [180] [7]
, то память под переменную выделяется в стеке. Объём стека ограничен, так как он, в общем-то, не предназначен дял хранения большого объёма данных.
Изменить объём стека можно где-то в настройках компилятора.
В любом случае, это не выход. Выход - выделять память под даннsе из кучи, а не из стека (т.е. при помощи оператора new). Но придётся следить за тем, чтобы не забыть освободить выделенную память.
А ЕЩЁ ЛУЧШЕ, раз уж вы пишете на С++, а не на С, использовать стандартную библиотеку шаблонов stl. Это защитит от утечек памяти.
Например, так:
#include <vector>
using namespace std;
....
vector<vector<vector<int> > > i; //тут надо поаккуратнее с пробелами! их удалять нельзя.
i.resize(180);
for (int j=0;j<i.size();++j){
i[j].resize(180);
for (int k=0;k<i[j].size();++k){
i[j][k].resize(7);
}
}
....
не лучший код, но идея понятна, надеюсь. Забыл я, честно говоря, можно ли у vector задачать начальный объём... Давно на с++ не пишу, если честно ^_^