Задать вопрос
vitali1995
@vitali1995

Можно ли сэкономить память при копипасте?

Представьте такой пример. Есть несколько функций, которые частично повторяют функционал, например содержат одинаковый цикл присваивания массива. Таких повторов может быть много, что сказывается на размере исполняемого файла и скорости его загрузки в оперативную память. Существуют ли способы компиляции (скажем так) ссылочным методом? Имею ввиду такой пример:
<раздел "a">
<command 1>
<command 2>
...
</a>

<функция "f">
<command 1>
<alias "a">
<command n>
...
</f>


Здесь определённый набор команд определяется в отдельном разделе и при загрузке функции в стек вызовов часть команд будет браться из него, а не дублироваться для каждой функции отдельно. Надеюсь, объяснил понятно.
  • Вопрос задан
  • 446 просмотров
Подписаться 1 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Skillbox
    Профессия Разработчик С++
 с нуля + ИИ
    7 месяцев
    Далее
  • Бруноям
    Разработчик на C++
    5 месяцев
    Далее
Решения вопроса 1
arusef
@arusef
Novice .NET dev
В общем случае эта задача не решаема из-за различия контекстов исполнения.
Чтобы добиться схожего эффекта, люди и придумали функции ведь. Думаю, что вы знаете, что функция - в сущности, инструкция call, которая обвешена дополнительным кодом для организации изолированного контекста. Если вам это поведение не нужно, то почему бы не использовать обычные инструкции jmp/call и писать в goto-стиле? Тогда отдельные участки кода будут полагаться на определённые предположения о контексте и переиспользоваться, в зависимости от оного. Но учтите, что такой подход крайне сложен и является источником большого числа ошибок.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Казань
от 75 000 до 120 000 ₽
Яндекс Москва
от 180 000 до 350 000 ₽
Альфа-Банк Москва
от 200 000 до 350 000 ₽