Сообщение Re: Насколько корректно использовать адрес переменной в стек от 20.07.2017 3:50
Изменено 20.07.2017 3:53 Лазар Бешкенадзе
Re: Насколько корректно использовать адрес переменной в стеке
Здравствуйте, Nick-77, Вы писали:
N7>
N7>т.е. вроде как несмотря на то, что формально tmp и её адреса после выхода из f не существует, реально стек ещё никто не успел (?) испортить и содержимое верное.
Я не знаю как сегодня но в 1998 это был отстой. Было понятие signal. Между выходом из функции и попыткой использовать содержимое по этому адресу может произойти туча всего и этот стек будет перезаписан 10 раз.
N7>
N7>static MType *f(MType *val, int size){
N7> MType tmp;
N7> if (val)
N7> tmp = *val;
N7> else
N7> // do smth to create new
N7> ;
N7> // .....
N7> return &tmp;
N7>}
N7>N7>т.е. вроде как несмотря на то, что формально tmp и её адреса после выхода из f не существует, реально стек ещё никто не успел (?) испортить и содержимое верное.
Я не знаю как сегодня но в 1998 это был отстой. Было понятие signal. Между выходом из функции и попыткой использовать содержимое по этому адресу может произойти туча всего и этот стек будет перезаписан 10 раз.
Re: Насколько корректно использовать адрес переменной в стек
Здравствуйте, Nick-77, Вы писали:
N7>
N7>т.е. вроде как несмотря на то, что формально tmp и её адреса после выхода из f не существует, реально стек ещё никто не успел (?) испортить и содержимое верное.
Адрес то существует.
Я не знаю как сегодня но в 1998 это был отстой. Было понятие signal. Между выходом из функции и попыткой использовать содержимое по этому адресу может произойти туча всего и этот стек будет перезаписан 10 раз.
N7>
N7>static MType *f(MType *val, int size){
N7> MType tmp;
N7> if (val)
N7> tmp = *val;
N7> else
N7> // do smth to create new
N7> ;
N7> // .....
N7> return &tmp;
N7>}
N7>N7>т.е. вроде как несмотря на то, что формально tmp и её адреса после выхода из f не существует, реально стек ещё никто не успел (?) испортить и содержимое верное.
Адрес то существует.
Я не знаю как сегодня но в 1998 это был отстой. Было понятие signal. Между выходом из функции и попыткой использовать содержимое по этому адресу может произойти туча всего и этот стек будет перезаписан 10 раз.