![]() |
|
Модераторы: bsa |
![]()
|
|
| adamo86 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 20.11.2008 Где: Deutschland Репутация: нет Всего: нет |
Всем привет. При компиляции ниже изложенного кода компилятор никаких ошибок не выдает, а вот при запуске сразу выскакивает ошибка. Не знаю в чем дело. Отследил что беда в последней (очередной строке): "tmp[i][j] = 1;" Замысел программы таков, что сначала прога читает первую строку из файла "Graf3.txt". и на основании прочитанного числа N создает матрицу NxN. А затем я пытаюсь заполнить некоторые элементы матрицы. Помогите, я не понимаю что я не правильно делаю.
Содержание файла "Graf3.txt" таково: 6 1 2 3 4 5 6 7 8 9 10 11 12 Код программы:
|
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Ну давайте немножко рассуждать. создали матрицу 6х6 и что делаем дальше: tmp[1][2] = 1; tmp[3][4] = 1; tmp[5][6] = 1; // уже вышли за пределы массива tmp[7][8] = 1; // совсем вышли за пределы массива tmp[9][10] = 1; // пишем уже практически в космос |
|||
|
||||
| adamo86 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 20.11.2008 Где: Deutschland Репутация: нет Всего: нет |
Спасибо volatile, ты меня спас. Надо же как я не доглядел.
|
|||
|
||||
| adamo86 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 20.11.2008 Где: Deutschland Репутация: нет Всего: нет |
А как создать строковой массив используя STL? И соответственно как его заполнять?
|
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| Буратиныч |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 15.3.2011 Репутация: нет Всего: нет |
У меня немного другой вопрос.
1) Как создать очень большой двумерный массив, типа float array[1000000][10000], и при этом не переполнить стэк, т.е. чтоб не выскакивало исключение Stack overflow? 2) Как его правильно объявить, если количество элементов заранее в нём не известно. В примере выше используется Вектор для типа string. Для флоат тоже самое? |
|||
|
||||
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
указать компилятору бОльший размер стека, но IMHO это неверное решение (см. ответ п.2)
для двумерного случая:
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| Буратиныч |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 15.3.2011 Репутация: нет Всего: нет |
borisbn, к векторам я ещё вернусь, а пока как в VS2010 изменять размер стэка?
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Буратиныч |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 15.3.2011 Репутация: нет Всего: нет |
borisbn, запись типа
ничего не меняет. Переполняется. Это сообщение отредактировал(а) Буратиныч - 23.4.2011, 10:29 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Буратиныч, 1000000 * 10000 * sizeof( float ) = 1000000 * 10000 * 4 = 40000000000 = 40 ГБ
У тебя есть столько памяти на борту ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Буратиныч |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 15.3.2011 Репутация: нет Всего: нет |
Ну я же не все сразу эти девятки запихивал, постепенно прибавлял. Ещё 2ГБ свободно.
Это сообщение отредактировал(а) Буратиныч - 23.4.2011, 10:42 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
другими словами у тебя компьютер с 42 ГБ памяти. Хорошо, бывает. А что за задача, если не секрет, которая требует одновременно иметь в памяти 10 млрд float'ов ? Это сообщение отредактировал(а) borisbn - 23.4.2011, 12:31 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Буратиныч |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 15.3.2011 Репутация: нет Всего: нет |
borisbn, вобщем, что сделать чтоб массив миллион на 10 тысяч выделялся? STACK не помогает, либо не правильно им пользуюсь.
|
|||
|
||||
| Буратиныч |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 15.3.2011 Репутация: нет Всего: нет |
Как правильно задать двумерный массив через new-delete?
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |