2014-09-20 2 views
1

Скажите, что у меня есть функция, которая возвращает int. Я не сохраняю значение из вызова функции. Я полагаю, что он не хранится в памяти и не исчезает в эфире, но я не знаю. Спасибо.C++ что происходит со значением, которое возвращается, но не сохраняется?

+0

Ну, это значение перестанет существовать, как при любом значении, когда функция выходит за рамки. В месте использования этой функции без получения этого значения не будет создан код для его копирования в другом месте. –

+4

Я не понимаю близких голосов. Вопрос совершенно ясен. –

+0

@CareyGregory Нет, вопрос явно не написан (что должно быть на самом деле эфиром или что такое значение (например, переменная, константа)) и не хватает некоторых конкретных образцов кода. Есть много возможностей, как компилятор мог бы справиться с этой ситуацией на самом деле, включая оптимизацию вызова всей функции в некоторых ситуациях (как упоминалось в ответе Джерри). Вы можете рассмотреть возможность его редактирования и улучшения. –

ответ

9

Возвращаемое значение int обычно будет храниться в регистре (например, EAX или RAX на 32-разрядной или 64-разрядной Intel соответственно).

Он не будет исчезать. Он просто будет перезаписан, если компилятор нуждается в этом регистре для какой-либо другой цели. Если рассматриваемая функция расширяется внутри, компилятор может обнаружить, что это значение не используется, и высвободить код для записи или вычисления значения вообще.