Память, выделенная с помощью alloca, освобождается в конце функции или в конце области видимости?

Если у меня есть такая функция:

void bla(int size) {
    while(b){
        char tmp[size];
        ......
    }
}

tmp освобождается на каждой итерации цикла while, верно?

Если я напишу эту функцию:

void bla(int size) {
    while(b){
        char* tmp = alloca(size);
        ......
    }
}

tmp получает освобожден в конце области видимости или в конце функции?

9
задан Damian 23 March 2011 в 15:23
поделиться