 Получить максимальный/текущий размер стека.
    , Borland C++ Builder v.6.0.
    Получить максимальный/текущий размер стека.
    , Borland C++ Builder v.6.0.
  |  | Наши проекты: Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту | |
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.107] | 
|   | 
 | 
 Получить максимальный/текущий размер стека.
    , Borland C++ Builder v.6.0.
    Получить максимальный/текущий размер стека.
    , Borland C++ Builder v.6.0.
  | 
         
         
          
           Сообщ.
           #1
          
          , 
          
         
         | |
|  |  Сначала хочу разобраться в определениях, чтобы все было верно. 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] помещается исправно - заполняется значениями в форе без вылетов. | 
| 
         
         
          
           Сообщ.
           #2
          
          , 
          
         
         | |
|  |  Осторожно на сцылку в сообщении топик-стартера   Кошмарский у меня выдает объект заражен 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() | 
|   | 
         
         
          
           Сообщ.
           #3
          
          , 
          
         
         | 
|  |  В соответствие с WinAPI по дефолту 1Мб выделяется (в 32битах; в 64х беспонятия). Но это можно переопределить при создании отдельно взятой нитки или указать линкеру, чтоб он в заголовок EXEхи воткнул нужную цифру для главной нитки. Только надо ли? Делаешь в хипе или в глобальной секции. В классе если, всё равно в хипе получится, так VCL устроена.  Добавлено P.S. А чё, STL в Билдер не завозили? std::vector<std::vector<float> > fff(32, std::vector<float>(32000)) работало ещё 22 года назад |