| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Большие массивы в C++Builder |
| Автор: abrek 2.3.2004, 15:35 |
| Создаю двумерный массив типа: double[200][200], с ним можно нормально работать. Увеличиваю размерность до double[300][300] - вылезает ошибка о переполнении стека. Что это за фича? Как ее обойти? И вообще, чем определяется максимально-возможная размерность статического массива? Заранее благодарен... |
| Автор: Crait 2.3.2004, 16:04 |
| Да ты его, видать, в функцию по значению передаешь. Передавай ссылку. |
| Автор: abrek 2.3.2004, 17:28 |
| Ну, да в функцию. А как его передать по ссылке? Пробовал так: func(**massiv) Не прокатывает - пишет, что не может конвертировать double*[300] в double**.(или наоборот - не помню сейчас). Была мысль сакать указателем по одномерному массиву как будто он двумерный, но это для меня пока сложновато - я только начинаю изучать язык, да и дальнейшие расчеты наверное усложнит. Мне ведь надо находить определитель этого массива-матрицы. Так как же мне быть? |
| Автор: maxim1000 2.3.2004, 17:32 |
| можно, например, объявить double[300*300] доступ будет с таким индексом: [300*y+x] а вообще нехорошо объявлять большие массивы, лучше использовать динамическое выделение памяти: оно для этого предназначено |
| Автор: Borisff2003 3.3.2004, 07:07 |
| Проблема не в том, что ты его передаешь в функцию(массивы передаются как указатели, а не по значению!), а как ты его оъявляеш. void a{ double d[300][300]; } Вызывает переполнение стека, так как статические переменные храняться в стеке, а он у тебя не бесконечный! Попробуй динамическое выделение или vector. |
| Автор: podval 3.3.2004, 10:17 | ||
Делай примерно так:
Внутри функции можешь работать с X[i][j], как нравится. З.Ы. Можешь поверить, у меня матрицы достаточно большие |