На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Получить максимальный/текущий размер стека., Borland C++ Builder v.6.0.
Сначала хочу разобраться в определениях, чтобы все было верно.

1. int ttt[4] - массив создается в стеке.
2. int ttt = new int[4] - массив создается вне стека.
3. Стек ограничен по размеру, поэтому моя попытка заполнить созданный "корректно" float fff[32][32000] приводит к StackOverflow.
4. Массив вне стека ограничен только свободной RAM в системе.

Почему спрашиваю. Например, в этом примере (абзац Stack Overflow) утверждается, что стек бесконечен.
https://www.helloworld.ru/texts/comp/lang/d...4/FindError.htm

О самой проблеме.

Нужно знать максимальный размер стека, чтобы понять, какой максимальный по размерности массив можно туда запихнуть. К примеру, float fff[32][1000] помещается исправно - заполняется значениями в форе без вылетов.
Осторожно на сцылку в сообщении топик-стартера Кошмарский у меня выдает
объект заражен HEUR:Trojan.Script.Redirector.gen

Добавлено
Цитата Сергей85 @
1. int ttt[4] - массив создается в стеке.
2. int ttt = new int[4] - массив создается вне стека.
3. Стек ограничен по размеру, поэтому моя попытка заполнить созданный "корректно" float fff[32][32000] приводит к StackOverflow.
4. Массив вне стека ограничен только свободной RAM в системе.

Насколько я помню:

Если объявляешь массив или переменную внутри функции - размещение произойдет на стеке. Если же объявишь как static, то в куче будет твой массив.
Если объявишь как глобальные (вне функций), то тоже всё будет в куче. В куче можно жрать памяти дохрена и больше.
Если приспичит именно внутри ф-ии что-то делать огромное, то используй выделение памяти на куче через:
malloc() (и подобные) и free()
В соответствие с WinAPI по дефолту 1Мб выделяется (в 32битах; в 64х беспонятия). Но это можно переопределить при создании отдельно взятой нитки или указать линкеру, чтоб он в заголовок EXEхи воткнул нужную цифру для главной нитки. Только надо ли? Делаешь в хипе или в глобальной секции. В классе если, всё равно в хипе получится, так VCL устроена.

Добавлено
P.S. А чё, STL в Билдер не завозили? std::vector<std::vector<float> > fff(32, std::vector<float>(32000)) работало ещё 22 года назад
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script execution time: 0,0219 ]   [ 20 queries used ]   [ Generated: 7.12.21, 15:21 GMT ]