Si tengo una función como esta:¿La memoria asignada con alloca se libera al final de la función o al final del alcance?
void bla(int size) {
while(b){
char tmp[size];
......
}
}
tmp se liberó en cada iteración del bucle while, ¿verdad?
Si escribo esta función:
void bla(int size) {
while(b){
char* tmp = alloca(size);
......
}
}
tmp se liberó al final del alcance o al final de la función?
O use un VLA en lugar de 'alloca'. De hecho, esta es la principal diferencia entre VLA y 'alloca': el alcance de la matriz automática es el alcance de bloque con VLA y el alcance de función con' alloca'. –