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

Что делает компилятор с этим? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В каждой строке текстового файла найти самую длинную последовательность цифр http://www.cyberforum.ru/cpp-beginners/thread1208828.html
В каждой строке текстового файла найти самую длинную последовательность цифр. значение ее длины превратить в строку, записать в начале строки исходного файла. Результаты записать в новый файл. -------------------- помогите сделать нужно на завтра. Мучаюсь 3 день на ней.
C++ Ошибка базового класса строки Есть код и есть ошибки в mystring.cpp, помогите пожалуйста исправить :help: /*----------------/ mystring.h /---------------*/ #ifndef MYSTRING_H #define MYSTRING_H http://www.cyberforum.ru/cpp-beginners/thread1208822.html
C++ программист С++ удалёнка - реально ли?
Ненмого не по теме, но не нашёл более подходящей темы. Вообщем многие из знакомых веб-программисты работают удалённо, 1 вообще живёт при этом на Бали, но поскольку я работаюв другой области и с железом, то мне понятное дело сидеть в офисе...Вот интересно, программисты С++,Java,С# часто ли работаю по удалёнке и при этом имеют неплохой доход(для меня это от 50т.р. СПБ). Фриланс с лабами итп не в...
C++ Запрограммировать на языке С
1.Пользователь вводит два натуральных числа m; n. Заполнить поле m n звёздочками в шахматном порядке 2.Проверить является ли введённое пользователем число палиндромом
C++ Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами http://www.cyberforum.ru/cpp-beginners/thread1208814.html
Привести пример класса с конструктором и деструктором, созданием экземпляра класса с помощью конструктора с параметрами.
C++ Cannot convert 'wchar_t *' to 'const char *' Всем привет, не могу понять почему не работает :( String s=StringReplace(s, String(char(92)),String(char(92))+String(char(92)),TReplaceFlags()<<rfReplaceAll); char *device; device = s; Получаю: " Cannot convert 'UnicodeString' to 'char *' " device = s.c_str(); Получаю: "Cannot convert 'wchar_t *' to 'char *'" device = s.t_str(); подробнее

Показать сообщение отдельно
IIARTEMII
20 / 20 / 3
Регистрация: 14.06.2012
Сообщений: 95
Завершенные тесты: 1
15.06.2014, 21:41     Что делает компилятор с этим?
ктумфен, у временных объектов есть такая особенность, как возможность продлить время их жизни путём создания константной ссылки на один из экземпляров.
Честно, лично я не знаю как конкретно делает C++ в данной ситуации, но значения функций он точно убирает в стек, однако временные объекты вычислений он может создавать и динамически (выделяя память в куче), о чём и намекает возможность продления их жизни. Создание такого объекта в стеке усложняет обработку стека при вычислениях (там же находятся точки возврата из процедур и всевозможные другие служебные данные), однако в противоречие своим же словам могу сказать, что ссылку можно завести в той же области видимости, где и создаётся временный объект, что не накладывает никаких ограничений и дополнительных сложностей для управления стеком.
Получается, что существует два возможных варианта сохранения таких объектов (даже три) - константные оптимизации компилятора (создание перманентной области памяти под все временные объекты); динамическое выделение памяти под них; размещение в стеке.
Спасибо за интересный вопрос) На досуге надо будет в руках с дизассемблером и профилировщиком разобраться в этом вопросе

Добавлено через 1 минуту
Под "значения функций" я имел в виду возвращаемые значения (при отсутствии присваивания чему-либо этого самого значения)...
 
Текущее время: 14:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru