4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
1 | |
Где хранятся временные объекты?25.07.2020, 19:45. Показов 2219. Ответов 20
Метки нет (Все метки)
В какой области памяти хранятся временные объекты если они не константные и на них ничего не ссылается?Они же не могут хранится на стеке либо в куче тк нельзя получить адрес временного объекта.
0
|
25.07.2020, 19:45 | |
Ответы с готовыми решениями:
20
Ссылки на временные объекты Необязательные временные объекты Теория, Временные объекты Временные объекты и ссылки |
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
|
|
25.07.2020, 19:47 | 2 |
- Почему? Как раз там и могут.
Думаю хранятся в Оперативке, в регистрах и на стэке.
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
25.07.2020, 19:47 | 3 |
0
|
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
|
|
25.07.2020, 19:47 | 4 |
Смотря еще какой объект. Если переменная - то в регистре может.
Если объект с кучей параметров - то в ОЗУ.
0
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
||||||
25.07.2020, 20:00 [ТС] | 5 | |||||
FFPowerMan, oleg-m1973,
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
25.07.2020, 20:04 | 6 | |||||
Потому что адрес получается по имени переменной, а здесь имени нет. Но под объект точно также резервируется место на стеке и вызываются конструктор/деструктор.
Добавлено через 1 минуту Адрес можно получить например вот так
0
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
25.07.2020, 20:06 [ТС] | 7 |
oleg-m1973, тогда я что-то вообще ничего не понимаю, как отличить rvalue от lvalue?
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
25.07.2020, 20:10 | 8 |
Это не об выделении памяти. У rvalue деструктор будет вызван сразу по окончанию выражения, на точке с запятой.
0
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
||||||
25.07.2020, 20:14 [ТС] | 9 | |||||
oleg-m1973, так в этом же случае так и есть , деструтор сразу после контруктора
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
25.07.2020, 20:17 | 10 |
0
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
25.07.2020, 20:19 [ТС] | 11 |
oleg-m1973, так что джелает этот объект rvalue ? то что у него нету имени?
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
25.07.2020, 20:23 | 12 |
В смысле, что делает? В данном случае инициализирует и деинициализирует объект, т.е. вызывает конструктор и деструктор. Память под этот объект выделяется на стеке при старте функции и уничтожается при выходе из неё.
0
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
25.07.2020, 20:24 [ТС] | 13 |
oleg-m1973, не так вопрос поняли, почему этот объект rvalue? потому что у него нету имени?
0
|
Комп_Оратор)
|
|
25.07.2020, 20:26 | 14 |
В данном случае, большинство компиляторов не станет его создавать в случаях, если создание объекта не выполняет каких-то действий в программном окружении как сайд-эффект. То есть его вообще может не быть. В ряде случаев, если какие-то действия совершаются, соответствующий код может быть скомпилирован без создания объекта.
Кроме того. Vanconts, rvalue и временный объект это не синонимы.
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
25.07.2020, 20:31 | 15 |
0
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
25.07.2020, 20:37 [ТС] | 16 |
oleg-m1973, а если вернуть lvalue ссылку на объект эта ссылка не будет иметь имени но она будет lvalue)
Добавлено через 4 минуты IGPIGP, вот вроде есть четкий список случаев когда и что https://en.cppreference.com/w/... e_category но почему к примеру если функция возвращает объект по значению то этот объект prvalue? Потому что так написано в стандарте?
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
25.07.2020, 20:40 | 17 |
В смысле? Ты путаешь ссылку и экземпляр объекта. Сама ссылка это такая же, как и все другие, переменная с типом "ссылка на lvalue". Соответственно без имени, она будет rvalue-переменной типа "ссылка на lvalue". Если бы у неё был деструктор, он бы вызвался.
0
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
25.07.2020, 21:17 [ТС] | 18 |
oleg-m1973, тоесть rvalue это любое выражение без имени?
0
|
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
|
|
26.07.2020, 03:20 | 19 |
rvalue, lvalue - это категории выражений. Объекты и их адреса - ортогональные этому вещи.
Выражение может, но не в любой ситуации, порождать (временный) объект. Т.е. объект - это только следствие. Категории выражений: http://eel.is/c++draft/expr.prop#basic.lval Временные объекты: http://eel.is/c++draft/conv.rval#1 http://eel.is/c++draft/basic.m... .temporary
2
|
argcargv
|
26.07.2020, 04:20
Где хранятся временные объекты?
#20
|
0
|
26.07.2020, 04:20 | |
Временные объекты встроенного типа "Анонимные" (временные) объекты? Где хранятся символы? Где хранятся данные? Где хранятся аргументы, передаваемые в функцию Где хранятся старые значения вложенных циклов? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |