Заблокирован
|
||||||||||||
1 | ||||||||||||
Возвращение ссылки на локальный объект14.05.2012, 22:00. Показов 9325. Ответов 45
Метки нет (Все метки)
0
|
14.05.2012, 22:00 | |
Ответы с готовыми решениями:
45
Возможно ли возвращение функцией двух значений? Именно возвращение, не ссылка или указатель Локальный объект Возвращение ссылки на локальный объект Возвращение const ссылки на временный объект |
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
15.05.2012, 00:54 | 22 |
0
|
Заблокирован
|
|
15.05.2012, 01:01 [ТС] | 23 |
Тогда ты знаешь, что область видимости статической переменной не имеет никакого отношения ни к времени жизни этой переменной, ни к стеку.
Речь же идет о том, что компиляторы прекрасно видят факт возвращения ссылки на локальный объект. Созданный на стеке (если тебе нужны такие уточнения). Но при этом, пропускают такой код.
0
|
15.05.2012, 01:06 | 24 |
так и есть
Я не говорил что это может понадобиться, я сказал что это можно сделать и компилятор возвращает предупреждение на это. Все верно.
Еще раз... Он об этом предупреждает! Идиот тот кто пишет! Никогда не путал. Прекрасно представляю в чем разница. Похоже даже лучше чем ты.
0
|
15.05.2012, 01:09 | 25 | |||||
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
15.05.2012, 01:16 | 27 |
Я и не говорил ничего подобного. Я лишь сказал, что локальная переменная на то и локальная, что к ней можно непосредственно обращаться по имени только в определенных местах, в данном случае в пределах функции, или, более широко, в пределах первых внешних фигурных скобок.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
15.05.2012, 01:18 | 29 |
Вам уже ответили, что возвращать ссылку на статический объект можно, ни компилятор ни стандарт "не будет против".
0
|
Заблокирован
|
|
15.05.2012, 01:23 [ТС] | 31 |
Предупреждение - это уже личная забота компилятора о родимых программистах. Но это на усмотрение компилятора. А вот стандарт языка позволяет.
Ты путаешь "локальную переменную" с "локальной статической". Локальные создаются на стеке, и имеют класс памяти auto. Локальная статическая - в статической области памяти, и имеют класс памяти static. Речь идет о локальных.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
15.05.2012, 01:27 | 32 |
Ну как я понял, народ хочет, чтоб компилятор выдавал ошибку в этом месте, и это было бы "по стандарту".
0
|
15.05.2012, 01:38 | 33 |
Так и речь об этом. И я пытаюсь доказать что это не просто так сделано.
Что ты подразумеваешь под "статической областью памяти" ? Добавлено через 3 минуты Если речь идет о возвращении ссылки на локальную переменную, то компилятор выдает предупреждения, что, на самом деле, правильно с его стороны.
0
|
Заблокирован
|
|
15.05.2012, 01:46 [ТС] | 37 |
В третий раз задаю этот вопрос: для чего может быть нужно возвращать ссылку на локальный или временный объект?
Я писал об этом чуть выше. Он пропускает некорректный код. Правильно он должен был бы его запретить (ошибка времени компиляции).
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
||||||
15.05.2012, 01:47 | 40 | |||||
ссылка не валидная но рабочая стек чаще всего не затирается(хотя может и есть компиляторы которые затирают стек) а смешается указатель стека так что в памяти останется значение
хотя это есть грязный хак у Касперски как то была статья зачем это нужно что то связано с шифрованием программы там еще такой пример был пишу по памяти могу ошибаться
Бред полнейший но работает но стоит взять другой оптимизатор может(скорее всего) и не сработать
0
|
15.05.2012, 01:47 | |
15.05.2012, 01:47 | |
Помогаю со студенческими работами здесь
40
Возвращение ссылки из функции Возвращение ссылки на локальную переменную Возврат указателя на локальный объект Возвращение ссылки на указатель использование её как левостороннего значения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |