Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
#1

Почему прога может зависать при инициализации массива - C++

24.01.2014, 09:31. Просмотров 367. Ответов 9
Метки нет (Все метки)

Проект в VS2010 простое консольное приложение
Есть массив

C++
1
string vesa_str[25][5][5][10][4];
При его инициализации внутри функции прога зависает.

Проверил в отдельном проекте ничего не зависает.

В чем может быть причина ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 09:31     Почему прога может зависать при инициализации массива
Посмотрите здесь:

При инициализации массива в отладке не попадаю в обработчик, поясните почему? - C++
имеется два класса struct Integer { explicit Integer(int const &value) : value_(value) { } Integer() ...

Почему при инициализации данных программа работает быстрей? - C++
Почему при инициализации данных программа работает быстрей?

Почему при инициализации строки, сначала создаётся пустой объект? - C++
Чтобы при создании присвоить строке какое-то значение, можно использовать два способа: string str1(”bla-bla-bla”); или string str2 =...

Почему при сборке Releas'а прога без VC++ не идёт? - C++
Прога использует библиотеки ДАО. Собираю как Release, на машине Win 98 она выдаёт ошибку MS VC++ Runtime Error.

Ошибка при инициализации массива - C++
#include <iostream> #include <conio.h> #include <fstream> #include <string> using namespace std; const int MEMORY = 10000; ...

Ошибка при инициализации массива - C++
Что делать? Так как я понимаю, точку с запятой вообще в помине не должно здесь быть!о_О

Ошибка при инициализации массива - C++
В примере есть массив: sf::String TileMap = { " ", " ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
24.01.2014, 10:32     Почему прога может зависать при инициализации массива #2
В инициализации может быть причина.
Если он внутри функции, то скорее всего недостаточно стековой памяти на 25000 элементов.
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
24.01.2014, 11:34  [ТС]     Почему прога может зависать при инициализации массива #3
castaway, А как принудительно можно увеличить эту память ?
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
24.01.2014, 11:38     Почему прога может зависать при инициализации массива #4
Цитата Сообщение от nill Посмотреть сообщение
А как принудительно можно увеличить эту память ?
http://social.msdn.microsoft.com/For...the-stack-size
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
24.01.2014, 11:38     Почему прога может зависать при инициализации массива #5
Храните переменные в куче, динамически выделив память.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
24.01.2014, 11:46     Почему прога может зависать при инициализации массива #6
А вообще, пятимерные массивы до добра не доводят.
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
25.01.2014, 06:25  [ТС]     Почему прога может зависать при инициализации массива #7
Tulosba,
сделал как написано по ссылке

In my Project ->

Properties -> Configuration Properties -> Linker -> System -> Stack Reserve Size :

увеличил размер Стека(не кучи как по ошибке сделал в первый раз)
И проблема пропала зависания больше нет

Отсюда вопрос чем грозит принудительное увеличение размера стека в проекте VS2010 ?
И какую цифру вообще ставить, поставил как по ссылке 8000000 без понимания что она вообще значит ?
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
25.01.2014, 10:38     Почему прога может зависать при инициализации массива #8
Цитата Сообщение от nill Посмотреть сообщение
Отсюда вопрос чем грозит принудительное увеличение размера стека в проекте VS2010 ?
Кроме как будет жрать больше памяти, ничем не грозит.
Цитата Сообщение от nill Посмотреть сообщение
И какую цифру вообще ставить, поставил как по ссылке 8000000 без понимания что она вообще значит ?
Обычно значения, используемого по умолчанию хватает. Поэтому, если стека не хватает, то в первую очередь следует пересмотреть код программы. Перенести данные из стека в кучу например.
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
25.01.2014, 17:10  [ТС]     Почему прога может зависать при инициализации массива #9
Tulosba, кстати у меня в VS2010 по умолчанию в Stack Reserve Size ничего не написано, по ссылке там пишут что по умолчанию должно быть 65 536
это особенность VS2010 ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2014, 17:28     Почему прога может зависать при инициализации массива
Еще ссылки по теме:

Заполнение массива при инициализации - C++
int arr; Как массив сразу заполнить нулями?

Ошибка при инициализации массива - C++
Не понимаю, почему не работает. Массив создается после введения количества его элементов, но все равно компилятор ругается. Код работать...

Заполнение массива при инициализации - C++
Доброго времени суток. Имеется следующий код: struct ProcessInfo { HANDLE ProcessHandle; DWORD ProcessID; HANDLE...

Непонятная ошибка при инициализации дин. массива - C++
Вылетает на memset'е с ошибкой записи. Что неправильно? int i = 0; int j = 0; int k = 0; BYTE ***Bitmap = (BYTE...

При инициализации многомерного массива через сер. оператор for выводится адрес - C++
const size_t rowCnt = 3, colCnt = 4; int ia; size_t cnt = 0; for (auto &row : ia) { for (auto &col : row) { col =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
25.01.2014, 17:28     Почему прога может зависать при инициализации массива #10
Цитата Сообщение от nill Посмотреть сообщение
это особенность VS2010 ?
Размер стека не регламентирован стандартом, если Вы об этом.
Т.е. опираться на какие-то вероятные диапазоны не стоит.

Насчет размера стека по умолчанию для VS2010: http://msdn.microsoft.com/en-us/libr...vs.100%29.aspx
Yandex
Объявления
25.01.2014, 17:28     Почему прога может зависать при инициализации массива
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru