He leído bastantes lugares que alloca
es obsoleto y no debe usarse y en su lugar se deben usar matrices de longitud variable.¿Es alloca completamente reemplazable?
Mi pregunta es esta: ¿Es alloca
completamente reemplazable por matrices de longitud variable?
En mi caso particular tengo algo que se parece a esto:
typedef struct {
int *value;
size_t size;
} some_type;
void SomeExternalFunction(some_type);
...
void foo(){
//What I thought to do
some_type bar;
bar.value=alloca(sizeof(int)*10);
SomeExternalFunction(bar);
//what should be done without alloca
some_type fizz;
int tmp[10];
fizz.value=tmp;
SoemExternalFunction(fizz);
}
Me estoy perdiendo algo o se trata de un buen uso real de alloca? Supongamos también para este ejemplo que por alguna razón deseo que el valor se asigne en la pila
Eso no es en realidad una matriz de longitud variable ... Como ha especificado una longitud constante. Y ... Incluso si * fuera * una longitud variable, realmente no estoy viendo qué alloca te compra aquí, aparte de hacer que la intención del código sea un poco más oscura. (Obviamente, si está utilizando un compilador que no admite matrices de longitud variable, no puede elegir entre las dos) – Shog9
Vea también: http://stackoverflow.com/questions/3452434/in-which- casos-es-alloca-útil (sería un duplicado basado en el título, pero creo que realmente estás tratando de preguntar algo más ... no puedo decir qué) – Shog9