Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

Создание области определния для очистки временных локальных переменных - C++

28.11.2013, 10:27. Просмотров 286. Ответов 4
Метки нет (Все метки)

Предположим, имеется некоторые доп. переменные, используемые только для нескольких действий в функции, а остаток функции (много больше, чем те действия с временными переменными) их не использует, поэтому я бы хотел освободить от них память. Могу ли я быть уверен, что такой код будет давать именно нужный мне результат и temp перестанет занимать память после выхода за скобку? И как такое влияет на оптимизации компилятора?
C++
1
2
3
4
5
6
7
8
9
void SomeFunctionWithSwap(int& x, int& y)
{
{
int temp = x;
x = y;
y = temp;
}
//работаю с X и Y, не используя temp.
}
И будет ли отличаться это по оптимизации и опять-таки освобождению памяти при использовании непримитивным классов?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2013, 10:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание области определния для очистки временных локальных переменных (C++):

Выделение и освобождение памяти для локальных переменных функций - C++
Привет Столкнулся со следующей проблемой. Написал простенькое приложение: читаем 1 строку из файла на диске, записываем 1 строку в файл...

Как читать целые числа из файла в аргумент функции без временных переменных? - C++
Следующая программа читает первые 2 целых числа, записанные в файле file.txt и передает их как аргументы в функцию foo: #include...

Обьявление локальных переменных - C++
Добрый день. В какой последовательности объявляются локальные переменные в функции? Если вызвать return раньше обьявления, будет ли...

Неинициализация локальных переменных - C++
Здравствуйте.Пишу в Visual studio 2012.Пишет что использованы неинициализированные локальные переменные sv и sn. Обьясните как правильно...

Рекурсия и никаких локальных переменных - C++
Нужно решить задание используя рекурсию и не используя никаких for,while и т.д.И локальных переменных. Входные данные: 5 - количество...

Время жизни локальных переменных в цикле - C++
Добрый вечер! допустим, в таком коде: int i=100; while(i>0) { int t = i+1; ... --i; }

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.11.2013, 10:44 #2
Про стек слышали? Так вот, в данном случае при входе в блок указатель вершины стека сместиться на размер переменной temp, а при выходе из блока вернется обратно. Если будет более сложный тип с конструктором/деструктором, то при входе в блок помимо прочего вызовется конструктор, а при выходе из блока - деструктор.
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
28.11.2013, 10:48  [ТС] #3
Tulosba, эм, ну да, и что? Т.е. все будет работать так, как я хочу, раз, говорите, деструктор (точно?) вызовется после выхода из области? И что там с оптимизациями?
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.11.2013, 10:52 #4
Цитата Сообщение от nexen Посмотреть сообщение
эм, ну да, и что?
А то, что
Цитата Сообщение от nexen Посмотреть сообщение
temp перестанет занимать память после выхода за скобку
значит лишь то, что вершина стека сместится. Физически как было у процесса памяти, так и осталось.
Цитата Сообщение от nexen Посмотреть сообщение
И как такое влияет на оптимизации компилятора?
См. ассемблерный выхлоп.
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
28.11.2013, 17:28  [ТС] #5
Tulosba, не имею на примере дизассемблера. Да и не факт, что я увижу разницу на таком тривиальном примере, а на реальном разница будет, поэтому лучше спросить опытных
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2013, 17:28
Привет! Вот еще темы с ответами:

Передача локальных переменных одной функции другой - C++
Добрый день, подскажите, как осуществить передачу локальных переменных получаемых в одной функции другой?Облазил гугл, ничего внятного...

Объясните синтаксис программы по полочкам с использованием локальных переменных и прототипа функции - C++
Здравствуйте уважаемые форумчане. Вот читаю книгу по C++, не буду писать какую, дабы избежать критики и обсуждений. Хотелось бы что бы вы...

Создание программы для определения принадлежности точки к заштрихованной области на координатной плоскости - C++
Написать программу, которая определяет, принадлежит ли точка с координатами (x,y) заштрихованной области D, изображенной на заданном...

Макрос определния платформы - C++
У меня вот такой вопрос: есть ли в VS макрос, отвечающий за использаванную платформу, меня интересует win32 и x64, чтобы компилировался...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.11.2013, 17:28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru