170 похожих чатов

Обьясните нубу про стек, при вызове функции, в С++ не

так же как в остальных языках программирования, образуется кадр стека?
Я вот на понимании того как риализуется рекурсия через стек компилятором, реализовал оригинальное решение, этой задачи на литкоде, чисто рекурсией, без каких либо контейнеров и чего либо ещё:
https://leetcode.com/problems/valid-parentheses/solutions/4190938/no-stack-clean-recursion-100-original-simple-solution/

9 ответов

15 просмотров

Тут речь про то, что самим программистом стек не используется, а используется рекурсия. То, что под капотом, здесь не рассматривается

"стек" это просто устройство рантайма, к контейнеру данных это отношения не имеет

Artem-ArtYhoo Автор вопроса
Aniki Hi$ok@ 🌈 Z 🐀
"стек" это просто устройство рантайма, к контейнер...

ну стек это структура данных реализованая по принципу лифо. Я не понимаю, что ты под рантаймом имеешь ввиду,

> в С++ не так же как в остальных языках программирования, образуется кадр стека? Ну модулю того, что C++ не требует от имплементации поддерживать вызовы функций через стек вызовов (например, при инлайнинге вызовы функций происходят в обход стека вызовов), ЕМНИП принципиальных отличий от других языков нет.

Artem-ArtYhoo Автор вопроса
Mikail Bagishov
> в С++ не так же как в остальных языках програм...

Ух ты интересно, но по факту, это же оптимизация до компилации просто оптимизирует код, убирая вызов функции, там где посчитает это излишним. Я правильно тебя понял?

Artem ArtYhoo
Ух ты интересно, но по факту, это же оптимизация д...

Да, я про эту оптимизацию. > убирая вызов функции А это вопрос точки зрения. У тебя тут "стекоцентричный" подход: на стек ничего не пушили и инструкцию call не вызывали, значит вызова не было. Но семантически-то вызов вполне случился и сделал все свои действия. Просто он случился в обход стека вызовов.

Artem-ArtYhoo Автор вопроса
Mikail Bagishov
Да, я про эту оптимизацию. > убирая вызов функции...

Скорее подкопотоцентричный. Не важно что программист написал, важно как компилятор исполнил

Artem ArtYhoo
Скорее подкопотоцентричный. Не важно что программи...

Вы можете сами это посмотреть. В первом случае инструкция CALL есть, а во втором - нет

Похожие вопросы

Обсуждают сегодня

Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
2
@sand_witch скорее к тебе вопрос, добавил в .cabal webdriver-w3c и вот такая ошибка от nix develop error: Package ‘script-monad-0.0.4’ in /nix/store/7vdxbra0kwbr0ys0kc5...
Fedor
5
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
Карта сайта