powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Возврат структуры по значению. Как делают все современные компиляторы?
3 сообщений из 3, страница 1 из 1
Возврат структуры по значению. Как делают все современные компиляторы?
    #38225557
good_cpp_questions
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
struct Dudu { int a, b, c };
Dudu function( void )
{
    Dudu d;
    d.a = 0;
    return d;
}



Будет ли создание, изменение и копирование созданного через стек или всё это будет соптимизировано до такого:
1. экземпляр создаётся сразу на месте получения
2. функция скрытым последним аргументом получает адрес структуры и меняет её
3. через стек ничего не возвращается.
...
Рейтинг: 0 / 0
Возврат структуры по значению. Как делают все современные компиляторы?
    #38225593
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
good_cpp_questions,

Однозначно ответить на этот вопрос нельзя, зависит от реализации.
Называется это RVO.
...
Рейтинг: 0 / 0
Возврат структуры по значению. Как делают все современные компиляторы?
    #38225666
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
good_cpp_questionsБудет ли создание, изменение и копирование созданного через стек или всё это будет соптимизировано до такого:
1. экземпляр создаётся сразу на месте получения
2. функция скрытым последним аргументом получает адрес структуры и меняет её
3. через стек ничего не возвращается.

1 - сразу на месте получения или через промежуточную переменную - зависит от оптимизаций
2 - да, функция неявно получает адрес участка стека, в котором должен быть создан результат. Место в стеке выделяет вызывающий код.
3 - соответственно результат возвращается в любом случае через стек (хотя в теории возможны и другие реализации, но смысла в них нет, т.к. например это резко усложняет RVO)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Возврат структуры по значению. Как делают все современные компиляторы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]