Насколько корректно использовать адрес переменной в стеке
От: Nick-77  
Дата: 19.07.17 09:51
Оценка: -1
Вот в таком случае:


есть какой-то структурный тип MType

и функция:

static MType *f(MType *val, int size){
    MType tmp; 
    if (val)
        tmp = *val;
        else 
        // do smth to create new 
    ;
    // .....
    return &tmp;
}



а используется функция только с помощью макрообёртки
#define f_construct(val, size)     *f( (val), (size) )



т.е. вроде как несмотря на то, что формально tmp и её адреса после выхода из f не существует, реально стек ещё никто не успел (?) испортить и содержимое верное.


Хотелось бы узнать у господ знатоков, насколько корректно подобное допущение.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.