Я собирался написать еще один комментарий, но он стал слишком длинным ...
Вы попросили выход из std :: bad_alloc, я могу представить два варианта:
- Купить больше оперативной памяти; -)
- Прекратить выделять столько памяти
Учитывая, что вы не предоставили никакого кода, и неясно, что вы имеете в виду под "шагами"Я буду считать, что «шаги» - это размер каждого одномерного массива.
Теперь рассмотрим одномерный (стандартный) массив.Массив char размером 50 потребует 50 непрерывных байтов в памяти.
Для двумерного массива необходимая память будет составлять 50 ^ 50: 2500 байтов.
Для трехмерного массивамассив, требуемая память будет 50 ^ 3: 125 КБ.
При переходе к пятимерному массиву вам потребуется 50 ^ 5 (312500000) байтов, примерно 300 МБ (необязательно смежных, поскольку вы обычновыделите каждый вложенный массив с помощью вложенного for loop
).
Если длина массива составляет 1000 вместо 50 , требуемая память будет равна 1000 ^ 5 (1 с15 нулей справа) байт, почти петабайт!
И вот почему у вас заканчивается память.