В теме еще разбираюсь плохо так что прошу строго не судить.
Насколько я понял, стек в основном нужен для правильного последовательного распределения выполнения функций в программе. Его вместимость ограничена и он может быть переполнен тем самым вызвав ошибку. Ввиду этого у меня возник вопрос: Почему бы чтобы уменьшить заполненность стека по дефолту не кидать все переменные в кучу?
Сам предполагаю что это вызвано тем, что процесс резервирования и освобождения памяти на стеке происходит быстрее чем в куче и по этому было бы рациональнее хранить небольшие данные в нем. Правильно ли я понимаю или нет?
Локальные переменные размещаются в стеке, чтобы быть локальными не только для функции, но и для каждой итерации ее вызова. Когда функция запускает сама себя рекурсивно, она должна получить новый блок памяти под локальные переменные, а при возврате первая должна обратно вернуть свои. И единственное что с точки зрения процессора отличает эти два "экземпляра" функции - указатель базы стека.
Если у вас локальные переменные суммарно хранят большой объем данных (от сотни килобайт и выше), то имеет смысл выделять область в куче, и хранить указатель на нее в стеке.
Почему такой механизм не применяется по умолчанию - потому что это медленнее и в 99% случаев не нужно.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Почему эта программа выводит doubledouble, я же явно указываю int?!
Пытаюсь разобраться с wmi, использую последний снипет из статьи Calling a Provider Method Не могу понять как указать ProcessStartupInformation для Win32_ProcessCreate на примере...
Вот такая задача на Нахождение K-ого минимума, написал такой код(На базовых примерах работает, на тестах все кроме 1 завалены): Помогите найти...